簡體   English   中英

java中字符串比較的意外結果?

[英]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)));

您正在比較s1s2的引用,並且由於分別定義了它們,因此它們沒有相同的引用。 要比較字符串,請使用equalsequalsIgnoreCase

'+' > '=='

所以

"-------The result is-----"+ s1==s2變為

("-------The result is-----"+ s1)==s2 ,因此為假。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM