我有以下的Java代碼:意外的布爾結果
String p = "seven";
String q = "teen";
p + q == "seventeen";
爲什麼最後一行返回false
而不是true
?
我有以下的Java代碼:意外的布爾結果
String p = "seven";
String q = "teen";
p + q == "seventeen";
爲什麼最後一行返回false
而不是true
?
因爲您應該使用equals
方法進行String
比較。 ==
運算符比較對象引用,並且這些引用對於每個對象都是唯一的。將對象與自身進行比較時,您只能得到true
的==
比較結果。
嘗試(p + q).equals("seventeen");
注意,在Java中String
比較是大小寫敏感的,所以你可能也想看看在equalsIgnoreCase
方法。
當比較Strings
時,您必須使用String
方法equals
或equalsIgnoreCase
,否則您正在比較對象。由於p
+ q
是與"seventeen"
不同的對象,因此您的結果將是錯誤的。
返回字符串由於==是引用相等和不邏輯相等。字符串是不可變的,所以你得到了新的字符串,這些字符串在內存中不會是同一個位置。嘗試:
String p = "seven";
String q = "teen";
(p + q).equals("seventeen");
這可能是http://stackoverflow.com/questions/1858569/java-why-can-string-equality-be-proven-with – sverre 2011-05-25 14:12:05