在Java中,equals()
方法是Object類中的一個方法,用于判斷兩個對象是否相等。當一個類需要比較兩個對象是否相等時,通常會重寫equals()
方法來實現自定義的相等規則。
默認情況下,equals()
方法比較的是兩個對象的引用是否相等,即比較的是對象在內存中的地址。如果希望比較兩個對象的內容是否相等,就需要在自定義類中重寫equals()
方法,通常需要同時重寫hashCode()
方法。
重寫equals()
方法時,通常需要實現以下幾個約定:
- 自反性:對于任何非null引用的對象x,x.equals(x)應該返回true。
- 對稱性:對于任何非null引用的對象x和y,如果x.equals(y)返回true,則y.equals(x)也應該返回true。
- 傳遞性:對于任何非null引用的對象x、y和z,如果x.equals(y)返回true,并且y.equals(z)返回true,則x.equals(z)也應該返回true。
- 一致性:對于任何非null引用的對象x和y,在對象沒有發生變化的情況下,多次調用x.equals(y)應該返回相同的結果。
- 對于任何非null引用的對象x,x.equals(null)應該返回false。