重寫equals時還必須重寫hashCode方法

2021-08-09 14:12:16 字數 507 閱讀 6256

1. public boolean equals(object obj), 和 hashcode() 方法是object物件中的方法

2. equals 與 hashcode間的關係是這樣的:

a. 如果兩個物件相同(即用equals比較返回true, 那麼它們的 hashcode 值一定要相同)

b. 如果兩個物件的 hashcode 相同,它們並不一定相同(即用equals比較返回false)

(1). 當 obj1.equals (obj2) 為true時,obj1.hashcode()  == obj2.hashcode() 必須為 true

(2). 當obj1.hashcode() == obj2.hashcode() 為false時,obj1.equals(obj2) 必須為false

3.為啥重寫equals

如果不重寫equals, 那麼比較的將是物件的引用是否指向同一塊記憶體位址,重寫之後,目的是為了比較兩個物件的 value 值是否相等

特別指出利用。。。

在重寫equals時還必須重寫hashcode方法

string類的原始碼 可以發現string是重寫了object類的equals方法的,並且也重寫了hashcode方法 public boolean equals object anobject if anobject instanceof string return true return fa...

為什麼重寫equals必須重寫hashCode呢

在理解這個問題時,我認為最先理解的應該是為什麼會重寫equals呢?理解清楚這個的前提下才有必要去理解為什麼需要去重寫hashcode!為什麼需要重寫equals方法呢?我認為是為了適應業務場景的需求而需要對類的equals方法進行重寫,最經典的重寫equals方法的例子莫過於string類了,在o...

IDEA 重寫equals重寫toString

重寫equals方法 idea中直接輸入eq回車進入重寫方法 第二步如果obj這個物件連學生 student 這個型別都不是,那麼肯定返回false if obj instanceof student 第三步如果是學生型別,強制把obj轉換成學生物件,不轉換預設是objeke student s s...