Java双等号,Equals(),HashCode()小结
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Java双等号,Equals(),HashCode()小结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                默認情況?
- 雙等號==,比較的是內存地址。 - equals(),默認比較的是內存地址。 - hashCode(),默認返回的是object的內存地址。String中方法改寫的情況
經常會遇到需要override equals()和hashCode()的情況,比如String就改寫了這兩個方法。 String equals() 的實現是首先判斷兩個字符串內存空間是否一致,然后對每一位字符進行比較。 String hashCode() 的實現是對每一位字符*31然后累加。Equals()和HashCode()的契約
Java中兩者有一個契約: - 如果兩個對象相等的話,即equals()返回true的時候,它們的hashCode()必須相等。 - 但如果兩個對象的hashCode()相等的話,這兩個對象(用equals()判斷)不一定相等。 舉例來說,在HashMap中存取鍵值對的時候用到了這兩個方法: - 用hashCode()計算Entry在數組中的位置 - 可能出現碰撞的情況,即多個Entry的hash code相同,存在同一個”格”中 - 這時,需要用equals()來判斷key是否相同 一般來說equals()和hashCode()的override都是綁定出現的,因為要保證上述的契約關系。參考
-?http://www.cnblogs.com/xudong-bupt/p/3960177.html -?http://www.importnew.com/8701.html轉載于:https://www.cnblogs.com/maxstack/p/7645461.html
總結
以上是生活随笔為你收集整理的Java双等号,Equals(),HashCode()小结的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: TPLINK物联App如何使用
- 下一篇: 无主之地3红宝箱在哪里
