1. 程式人生 > >Java String類的equals原始碼研究

Java String類的equals原始碼研究

      Object類中的equals()方法:

public boolean equals(Object obj)
{
//呼叫equal的物件的地址和引數物件的地址是否相等
return (this == obj);
}



     對於Java中的其他類,如果沒有重寫Object類中的equals()方法,我們就可以認為呼叫Object類的equals()方法就是判斷這兩個類是不是同一個類。只要是使用new 類名(),這種形式生成的類(除單例外),我們都可以認為是不同的類(地址不同)。

String類中的equals()方法:

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;
}


        對於Object類的equals()方法,判斷呼叫該方法的物件與要比較的物件是不是同一個物件(判斷地址),而String類中的equals()方法,則判斷當前字串與傳遞進來的字串的內容是否一致。