2011-05-25 152 views
1

我有以下的Java代碼:意外的布爾結果

String p = "seven"; 
String q = "teen"; 
p + q == "seventeen"; 

爲什麼最後一行返回false而不是true

+0

這可能是http://stackoverflow.com/questions/1858569/java-why-can-string-equality-be-proven-with – sverre 2011-05-25 14:12:05

回答

10

因爲您應該使用equals方法進行String比較。 ==運算符比較對象引用,並且這些引用對於每個對象都是唯一的。將對象與自身進行比較時,您只能得到true==比較結果。

嘗試(p + q).equals("seventeen");

注意,在Java中String比較是大小寫敏感的,所以你可能也想看看在equalsIgnoreCase方法。

0

當比較Strings時,您必須使用String方法equalsequalsIgnoreCase,否則您正在比較對象。由於p + q是與"seventeen"不同的對象,因此您的結果將是錯誤的。

4

(P + Q).intern()== 「17」

實習生將從池

+0

+1的副本,顯示如何一個可以使用'=='檢查相等性 – mre 2011-05-25 14:16:06

0

返回字符串由於==是引用相等和不邏輯相等。字符串是不可變的,所以你得到了新的字符串,這些字符串在內存中不會是同一個位置。嘗試:

String p = "seven"; 
String q = "teen"; 
(p + q).equals("seventeen");