大家好,這裡是IT技術百貨,專注於有價值的IT技術知識分享;
今天跟大家分享Java String類的equals方法的實現
關於equals方法,需要明白的知識點
equals一般是用來比較兩個對象是否相等,當然每個對象和其自身肯定是相等的;
經常在面試中被問到的一個知識點是equals和==的區別,一般都知道,==比較的是對象的地址,而equals比較對象是否相等,相等定義可以由開發者自己去定義和實現;
java Object類定義類equals的實現,這裡實現的邏輯是比較兩個對象的地址,地址相同則認為相等,地址不同則認為不等。
我們在平時開發中會遇見需要重寫對象的equals方法的情況,但實現往往存在不合理、不科學、不優雅的問題,所以今天來看看String的Equals實現方式是怎樣的,其他對象的Equals邏輯完全可以套用這個結構。
Equals源碼解讀
詳見代碼註釋;
<code>public boolean equals(Object anObject) {//注意:equals的入參是Object對象
if (this == anObject) {//首先比較是否是同一個對象,同一個對象自然相等,直接返回true;
return true;
}
if (anObject instanceof String) {//兩個對象的類型是否相同
String anotherString = (String)anObject; //相同做一個強制轉換
//下面就是具體的比較邏輯
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}/<code>
小結
equals方法的整體結構:
- 比較是否和自身相等
- 比較兩個對象類型是否相等
- 具體的比較邏輯,一旦不滿足某一個條件則直接返回
感謝瀏覽閱讀,如果覺得內容有價值歡迎點贊,轉發;喜歡請關注“IT技術百貨”
閱讀更多 IT技術百貨 的文章