Я хотел бы понять, как распределяется память, когда мы используем + и + = для строк в Java. Я знаю, что строковые литералы хранятся в пуле строковых констант, а в случае 1 и s1, и s2 ссылаются на одну и ту же память в пуле констант строк.
В случае № 2, даже если я использую оператор +, он по-прежнему ссылается на тот же объект в String Constant Pool
Что мне интересно, так это Случай №3. Как и где в этом случае выделяется память? Чем он отличается от Case # 2
//Case #1
String s1 = "Hello Java";
String s2 = "Hello Java";
System.out.println(s1 == s2); //true
//Case #2
s1 = "Hello" + " Java";
s2 = "Hello Java";
System.out.println(s1 == s2); //true
s1 = "Hello";
s1 += " Java";
s2 = "Hello Java";
System.out.println(s1 == s2); //false