假設我創建像下面兩個Object,
String s1 = "abc";
String s2 = s1;
System.out.println("== comparison "+ s1==s2);
我期待輸出
==比較true
但我得到
假
問題是什麼?
我沒有得到我的期望輸出。
問題 爲什麼它不符合預期的輸出。
請回復並解釋它爲什麼會這樣。
在此先感謝 tofek汗
假設我創建像下面兩個Object,
String s1 = "abc";
String s2 = s1;
System.out.println("== comparison "+ s1==s2);
我期待輸出
==比較true
但我得到
假
問題是什麼?
我沒有得到我的期望輸出。
問題 爲什麼它不符合預期的輸出。
請回復並解釋它爲什麼會這樣。
在此先感謝 tofek汗
正是因爲operator precedence。
+
運算符的優先級高於==
。
因此,您比較了"== comparison " + s1
與s2
的拼接。由於字符串不可變,因此創建包含"== comparison abc"
的新字符串實例,並且此實例永遠不會與s2
相同,因爲s2
仍引用。
使用這個代替
"== comparison " + (s1 == s2)
經驗法則:如果有疑問,請添加一些額外的括號:-) –
您的代碼
System.out.println("== comparison "+ s1==s2);
其實就是做
System.out.println(("== comparison "+ s1)==s2);
嘗試
System.out.println("== comparison "+ (s1==s2));
因爲它打印( 「==比較」 + S1)== S2,這顯然是錯誤的
這是你真正需要什麼
System.out.println("== comparison " + (s1 == s2));
感謝你們所有人,因爲給予我的人造好材料。 – user3172496
System.out.println("== comparison "+ s1==s2);
這應改爲
System.out.println("== comparison "+ (s1==s2));
爲了預先準備文本輸出的比較結果。也習慣於將字符串與.equals()
方法進行比較,因爲您可能想要比較這些值,而不是檢查引用是否相等。請參閱How do I compare strings in Java?
執行'System.out.println(「==比較」+(s1 == s2));'。你將s1與'「==比較」'連接起來。 –
這是java中的一個基本理解,試圖理解'.equal()'和'=='之間的區別 – Rugal
這不是愚蠢的(無論如何) –