關於“==”,equals(),equalsIgnoreCase()


"==":

①基本類型比較的是值;

②引用類型比較的是地址;

③不同類型不能用它比較,無法通過編譯。

 

equals(Object obj):

①用於應用類型的比較;

②String重寫Object的equals方法,先用“==”判斷地址,地址相同則直接返回true;然后再比較類型,類型不同則直接返回false;最后才比較內容。代碼如下:

public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String aString = (String)anObject;
            if (coder() == aString.coder()) {
                return isLatin1() ? StringLatin1.equals(value, aString.value)
                                  : StringUTF16.equals(value, aString.value);
            }
        }
        return false;
    }

由於equals是Objec的方法,意味着任意引用類型對象都可以調用,而且,入參是Object類型,所以,不同類型是可以用equals()方法的,不會像“==”一樣編譯異常,這也正是我經常遇到的一個小坑,例如:char chr = ‘a’,String str = “a”,我經常會寫成str.equals(chr),而且還傻傻的等着返回true,上面說到過,兩個不同類型的變量比較,equals()會直接返回false。str.equals(chr+"")倒是可以解決。

 

equalsIgnoreCase(String str):

雖然也是用來比較的,但是不同於equals,它是String自己的方法而不是重寫Object的方法,只有String對象能調用,而且入參只能是String。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM