他其實就是用來比較字符串的內容的,因為基本數據類型可以直接用=來比較,但是引用類型不可以,所以就有了這個equals方法,他可以用來比較字符串里面內容一致不一致,如果是“內容”equals(變量名的話)記住那個常量一定要寫在括號里面,否則會有一定的異常,他是字符串比較用的,因為如果引用類型也用=號來比較他比較的就不是內容了,他比較的是地址值,如果是對象用的equals方法,那么就是對象與對象之間比較的哈希值
前言
Java的基類Object提供了一些方法,其中equals()方法用於判斷兩個對象是否相等,hashCode()方法用於計算對象的哈希碼。equals()和hashCode()都不是final方法,都可以被重寫(overwrite)。
本文介紹了2種方法在使用和重寫時,一些需要注意的問題。
如果覺得文章對你有幫助,歡迎點贊或轉發。文章有疏漏之處,歡迎批評指正。
一、equal()方法
Object類中equals()方法實現如下:
public boolean equals(Object obj) { return (this == obj); }
通過該實現可以看出,Object類的實現采用了區分度最高的算法,即只要兩個對象不是同一個對象,那么equals()一定返回false。
雖然我們在定義類時,可以重寫equals()方法,但是有一些注意事項;JDK中說明了實現equals()方法應該遵守的約定:
(1)自反性:x.equals(x)必須返回true。
(2)對稱性:x.equals(y)與y.equals(x)的返回值必須相等。
(3)傳遞性:x.equals(y)為true,y.equals(z)也為true,那么x.equals(z)必須為true。
(4)一致性:如果對象x和y在equals()中使用的信息都沒有改變,那么x.equals(y)值始終不變。
(5)非null:x不是null,y為null,則x.equals(y)必須為false。