日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【JAVA基础篇】==、equals和hashCode的区别和联系

發布時間:2025/3/8 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【JAVA基础篇】==、equals和hashCode的区别和联系 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

==

作用:比較兩個操作數的關系,返回一個boolean類型的結果

具體含義:如果兩個操作數是基本數據類型,比較值是否相等。如果兩個操作數是引用類型,那么比較的是內存地址是否相同。

equals

Object類的實例方法,剛學Java的時候,很多人會把equals理解成比較內容是否相同,這種理解是不準確的。

我們查看Object.equals的實現:

public boolean equals(Object obj) {return (this == obj);}

這明明是比較的內存地址好嗎?那為什么會有很多人說equals是比較內容呢?

原因是String、Integer、Long很多封裝類重寫了equals方法,進行內容的比較。

hashCode

Object類的本地方法,返回對象的內存地址處理后的結構。同樣的思路,很多封裝類重寫了hashCode()方法。

equals和hashCode的區別和聯系

set集合是無序的,因此是不能重復的,那么怎么能保證不能被放入重復的元素呢,單靠equals方法進行比較的話,如果原來集合中以后又10000個元素了,那么放入10001個元素,難道要將前面的所有元素都進行比較,看看是否有重復,歐碼噶的,這個效率可想而知,因此hashcode 就應遇而生了。

所有對于需要大量并且快速的對比的話如果都用equal()去做顯然效率太低,所以解決方式是,每當需要對比的時候,首先用hashCode()去對比,如果hashCode()不一樣,則表示這兩個對象肯定不相等(也就是不必再用equal()去再對比了),如果hashCode()相同,此時再對比他們的equal(),如果equal()也相同,則表示這兩個對象是真的相同了,這樣既能大大提高了效率也保證了對比的絕對正確性!

通常如果重寫了equals方法,也需要重寫hashCode方法,并且要保證equals方法返回true時,hashCode()返回的值要相同。

總結

以上是生活随笔為你收集整理的【JAVA基础篇】==、equals和hashCode的区别和联系的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。