在Java中,equals()
方法是用于比較兩個對象是否相等的方法。默認情況下,equals()
方法會調用對象的hashCode()
方法,因此,如果兩個對象相等,它們的哈希碼也一定相等。但是,反過來并不總是成立,即兩個對象的哈希碼相等,并不意味著這兩個對象一定相等。
equals()
方法的定義如下:
public boolean equals(Object obj)
其中,obj
是要與之比較的對象。如果傳入的對象與當前對象相等,則返回true
;否則返回false
。
在自定義類中,如果需要進行相等性比較,通常需要重寫equals()
方法。在重寫時,需要注意以下幾點:
x.equals(y)
返回true
,那么y.equals(x)
也應該返回true
。x
,x.equals(x)
應該返回true
。x.equals(y)
返回true
,y.equals(z)
返回true
,那么x.equals(z)
也應該返回true
。x
和y
的值沒有發生變化,那么多次調用x.equals(y)
應該始終返回相同的結果。x
,x.equals(null)
應該返回false
。此外,還需要注意與hashCode()
方法的關系。如果在自定義類中重寫了equals()
方法,通常也需要重寫hashCode()
方法,以保持equals()
和hashCode()
之間的一致性。這是因為Java中的哈希表(如HashMap
)依賴于對象的哈希碼來進行存儲和檢索操作。如果兩個相等的對象返回不同的哈希碼,那么這些對象在哈希表中就無法正確地存儲和檢索。