给出以下代码:

String str1 = new String("Hello");
String str2 = str1;
String str3 = new String(str1);
String str4 = str3;
str4 += " World ";
if (str3==str4)
     System.out.println(“one”);
if (str3.equals(str4))
     System.out.println(“two”);
if (str1==str2)
     System.out.println(“three”);
if (str3.equals(str2))
     System.out.println(“four”);


输出是:三和四

我不明白..我们只是做了str3 == str4。他们怎么不引用相同的对象呢?
str3 == str4似乎是错误的,我不明白为什么。另外,str3.equals(str4)也返回false,但我想这与我没有得到的第一件事有关。

希望得到一个解释。

最佳答案

因为String是不可变的,所以+=运算符将创建一个新实例并将其分配给str4。因此str4不等于str3

10-07 14:38