String類中的equals是如何重寫的


我們知道String中的equals方法是被重寫過的,因為object的equals方法是比較的對象的內存地址,而String的equals方法比較的是對象的值。

首先幾個知識點:

基本數據類型==比較的是值,引用數據類型==比較的是內存地址。

所以我的思路是:

將兩個String對象都變成char數組,然后進行數組內容的對比即可。

 

JDK中的源碼是:

public boolean equals(Object anObject)
{
       //如果是同一個對象
        if (this == anObject)
        {
            return true;
        }
        //如果傳遞進來的參數是String類的實例
        if (anObject instanceof String)
        {
            String anotherString = (String)anObject;
            int n = count;//字符串長度
            if (n == anotherString.count) //如果長度相等就進行比較
            {
                char v1[] = value;//取每一個位置的字符
                char v2[] = anotherString.value;
                int i = offset;
                int j = anotherString.offset;
                while (n-- != 0) //對於每一位置逐一比較
                {
                    if (v1[i++] != v2[j++])
                        return false;
                }
                return true;
            }
        }
        return false;
}

 


免責聲明!

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



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