[英]Unexpected result in String Comparison In java?
public class HelloWorld {
public static void main(String[] args) {
String s1="yes";
String s2="yes";
System.out.println("-------The result is-----"+ s1==s2);
System.out.println("-------The result is-----"+ (s1==s2));
}
}
為什么上面的代碼產生輸出
“假”
-------結果是----- true
首先,您不應該將字符串與==
進行比較,而應與equals()
進行比較。
還有運算符優先級的問題。 這個:
"-------The result is-----"+ s1==s2
是相同的:
("-------The result is-----"+ s1) == s2
因為+
優先級高於==
。
比較字符串時,由於.equals()
比較字符串的內容或用於比較對象,因此.equals()
==
更改為.equals()
。 ==
檢查引用是否相等或用於比較基元。 我在下面更改了您的代碼:
System.out.println("-------The result is-----"+ (s1.equals(s2)));
您正在比較s1
和s2
的引用,並且由於分別定義了它們,因此它們沒有相同的引用。 要比較字符串,請使用equals
或equalsIgnoreCase
'+' > '=='
所以
"-------The result is-----"+ s1==s2
變為
("-------The result is-----"+ s1)==s2
,因此為假。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.