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