equals方法的小結

2022-03-07 01:25:45 字數 703 閱讀 4271

儘管經常使用equals,也可能理解不一定神,最近又要使用collections.sort看到了這些,總結的不錯。

首先equals方法必須滿足自反性、對稱性、傳遞性和一致性。

自反性(x.equals(x)必須返回true)、

對稱性(x.equals(y)返回true時,y.equals(x)也必須返回true)、

傳遞性(x.equals(y)和y.equals(z)都返回true時,x.equals(z)也必須返回true)

和一致性(當x和y引用的物件資訊沒有被修改時,多次呼叫x.equals(y)應該得到同樣的返回值),

而且對於任何非null值的引用x,x.equals(null)必須返回false。

實現高質量的equals方法的訣竅包括:

1. 使用==操作符檢查"引數是否為這個物件的引用";

2. 使用instanceof操作符檢查"引數是否為正確的型別";

3. 對於類中的關鍵屬性,檢查引數傳入物件的屬性是否與之相匹配;

4. 編寫完equals方法後,問自己它是否滿足對稱性、傳遞性、一致性;

5. 重寫equals時總是要重寫hashcode;

6. 不要將equals方法引數中的object物件替換為其他的型別,在重寫時不要忘掉@override註解(可以不寫,但寫了利大於弊)。

我只是大自然的搬運工。打個小廣告,銷售兒童早教產品,為了娃買套吧,哈哈。

equals方法的特性

一 自反性 reflexive obj.equals obj true 二 對稱性 symmetric obja.equals objb true,那麼也有objb.equals obja true 三 傳遞性 transitive obja.equals objb true,objb.equals...

equals方法的重新

object類生成的equals方法在預設的情況下是進行位址比較,但有些時候並不能滿足我們的需要,所以需要按使用者的需求重新定義該方法。舉個例子 假設我們現在想判斷兩個person的資訊,如果全部資訊都相等的話就可以判斷為同乙個人。public class test 在person類重新equals...

重寫equals方法

對於重寫equals方法有以下例子 object類中的常用方法。object類是所有類的根類,定義了所有物件都具備的功能。api 應用程式介面 文件 class person extends object 判斷是否是同齡人。這個方法也是在比較兩個person物件是否相等。注意 person類中是否有...