hashcode和equals的區(qū)別是:1、若兩個對象equals返回true,則hashCode有必要也返回相同的int數(shù);2、若兩個對象hashCode返回相同int數(shù),則equals不一定返回true。
hashcode:對象的初始地址的整數(shù)表示? ? ?
Java中的對象是JVM在管理,JVM會在她認為合適的時候?qū)ο筮M行移動,比如,在某些需要整理內(nèi)存碎片的GC算法下發(fā)生的GC。此時,對象的地址會變動,但hashcode不會改變?! ?/p>
hashCode是為了提高在散列結(jié)構(gòu)存儲中查找的效率,在線性表中沒有作用。
一般一個類的對象如果會存儲在HashTable,HashSet,HashMap等散列存儲結(jié)構(gòu)中,那么重寫equals后最好也重寫hashCode,否則會導致存儲數(shù)據(jù)的不唯一性(存儲了兩個equals相等的數(shù)據(jù))。而如果確定不會存儲在這些散列結(jié)構(gòu)中,則可以不重寫hashCode。
若兩個對象equals返回true,則hashCode有必要也返回相同的int數(shù)。
若兩個對象equals返回false,則hashCode不一定返回不同的int數(shù),但為不相等的對象生成不同hashCode值可以提高哈希表的性能。
若兩個對象hashCode返回相同int數(shù),則equals不一定返回true。
若兩個對象hashCode返回不同int數(shù),則equals一定返回false。
同一對象在執(zhí)行期間若已經(jīng)存儲在集合中,則不能修改影響hashCode值的相關信息,否則會導致內(nèi)存泄露問題。
一般來說涉及到對象之間的比較大小就需要重寫equals方法。
推薦教程: 《java教程》
以上是hashcode和equals的區(qū)別什么的詳細內(nèi)容。更多信息請關注PHP中文網(wǎng)其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機

Video Face Swap
使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級代碼編輯軟件(SublimeText3)