2012-12-24 106 views
-5

可能重複:
String is not equal to string?
What makes reference comparison (==) work for some strings in Java?JAVA - 爲什麼== 「1」 返回false

可以有一個人下面的Java代碼

String a = "1"; 
if(a == "1") { 
//print compare 1 is true; 
} else { 
//print compare 1 is false; 
} 

if(a.equals("1")) { 
//print compare 2 is true; 
} else { 
//print compare 2 is false; 
} 

給我解釋一下它的結果如

compare 1 is false 
compare 2 is true 

我唯一的解釋是它比較內存地址而不是數值本身。但我不確定。可以請一些人注意一下。在.Net ==運算符被重載以比較字符串的內容。

+1

==比較字符串時不起作用,即使它不會產生錯誤。對於Java中的任何*對象*都是如此。使用* .equals *會給你一個正確的結果。這很簡單。 – Aaron

+7

我仍然說我們需要一個「這不是你如何比較Java中的字符串」關閉選項。 –

+2

我不明白倒票是關於什麼的。 – Marlon

回答

3

使用"1".equals(a),字符串是一個對象,所以使用equals()比較

0

我瞭解,==運營商是比較「是同一個對象?」

對象a與常量字符串"1"不是同一個對象。

因此返回false

+1

它實際上是相同的對象,並且實際上將評估爲「true」,除非您的JVM已損壞且不符合規範。字符串文字是interned這就是這個問題得到反覆詢問的原因。 –

+0

感謝您的正確答覆。我誤解了。 –