equals與==和Hashcode,一直有點模糊不清

未修改equals比較的內容,兩個對象經過equals比較相等,其HashCode必定相等,
可是HashCode相等,不必定推出equals必定爲true(Hash衝突)
HashCode不等,必定能推出equals爲false;
也就是說equals比較的對象不等,其hashcode碼也有可能不一樣,也有可能相同
==比較是兩個對象是不是存儲在同一個內存地址中,而equals比較的是兩個對象的引用是否相同
基本類型變量不能用equals比較(a equals(b),jdk1.5以上b能夠爲基本數據類型,a不能夠)
爲不一樣對象生成不一樣的hashcode能夠提升hash表的性能,java中大部分的類都寫了hashCode()方法,通常要用到相關方法時會重寫hashcode()方法
相關文章
相關標籤/搜索