String a1 = "I Love" + " Java";
String a2 = "I Love " + "Java";
System.out.println(a1 == a2); // true
String b1 = "I Love";
b1 += " Java";
String b2 = "I Love ";
b2 += "Java";
System.out.println(b1 == b2); // false
在第一种情况下,据我所知,它是两个字符串文字的串联,这样的结果:“我爱的Java”将被扣留,使结果真实。但是,我不确定第二种情况。
问题2
String a1 = "I Love" + " Java"; // line 1
String a2 = "I Love " + "Java"; // line 2
String b1 = "I Love";
b1 += " Java";
String b2 = "I Love ";
b2 += "Java";
String b3 = b1.intern();
System.out.println(b1 == b3); // false
以上返回false,但如果我注释掉线1和2,它返回true。这是为什么?
我们从来没有真正比较使用==操作符串并使用.equals方法,而不是 –
@JoeyPinto OP使用''==了解Java的内部,发现行为看起来很奇怪,但有一个合理的解释。 – dasblinkenlight