儘管經常使用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類中是否有...