У меня есть следующий простой фрагмент кода Java, где я пытаюсь понять, как работает конкатенация строк в Java, используя оператор «+».
public class Problem {
public static void main(String... args){
String str1 = "abc";
String str2 = "ab";
String str3 = "c";
String str4 = "ab" + "c";//This will use of StringBuilder class for concatenation and return new String object
String str5 = str2 + str3;//This will use of StringBuilder class for concatenation and return new String object
System.out.println(str1 == str4); // This returns true
System.out.println(str1 == str5); // This returns false
}
}
str4
является результатом 2 строковых литералов (ab
и c
), а str5
является ссылкой на 2 строковых литерала (str2
и str3
). В обоих случаях java будет вызывать класс StringBuilder для выполнения конкатенации.
И я считаю, что это должно привести к созданию 2 разных объектов StringBuilder в пространстве кучи Java.
Если мое понимание верно, почему str1 == str4
возвращает истину? Может ли кто-нибудь помочь мне разобраться с этим?
С уважением,
Маниш Шарма