摘要:方法提供了對象的值,是一個方法,返回的默認(rèn)值與一致。通常這個值是對象頭部的一部分二進(jìn)制位組成的數(shù)字,具有一定的標(biāo)識對象的意義存在,但絕不定于地址。與的關(guān)系相等兩個對象,則一定要相等。
Java基礎(chǔ)系列
Java的hashcode與equals方法
Java類初始化順序
ThreadPoolExecutor線程池如何彈性伸縮
HashMap的幾個要點(diǎn)
Integer的緩存
什么場景下使用阻塞隊(duì)列
volatile的使用及DCL模式
try-catch-finally中的return
序Java基礎(chǔ)的東東,hashcode和equals方法的區(qū)別。
hashcodehashcode()方法提供了對象的hashCode值,是一個native方法,返回的默認(rèn)值與System.identityHashCode(obj)一致。
通常這個值是對象頭部的一部分二進(jìn)制位組成的數(shù)字,具有一定的標(biāo)識對象的意義存在,但絕不定于地址。
作用是:用一個數(shù)字來標(biāo)識對象。比如在HashMap、HashSet等類似的集合類中,如果用某個對象本身作為Key,即要基于這個對象實(shí)現(xiàn)Hash的寫入和查找,那么對象本身如何實(shí)現(xiàn)這個呢?就是基于hashcode這樣一個數(shù)字來完成的,只有數(shù)字才能完成計(jì)算和對比操作。
hashcode是否唯一hashcode只能說是標(biāo)識對象,在hash算法中可以將對象相對離散開,這樣就可以在查找數(shù)據(jù)的時候根據(jù)這個key快速縮小數(shù)據(jù)的范圍,但hashcode不一定是唯一的,所以hash算法中定位到具體的鏈表后,需要循環(huán)鏈表,然后通過equals方法來對比Key是否是一樣的。
equals與hashcode的關(guān)系equals相等兩個對象,則hashcode一定要相等。但是hashcode相等的兩個對象不一定equals相等。
小結(jié)hashcode是為了算法快速定位數(shù)據(jù)而存在的,而equals是為了對比真實(shí)值而存在的。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/65552.html
摘要:如果根據(jù)方法得到兩個對象不相同,那么兩個對象的方法的結(jié)果不一定不相同,我們可以利用這一點(diǎn)來提高散列表的性能。最后回到文章開頭的問題,如何判斷兩個對象或值是否相同這個問題其實(shí)有兩方面的含義,一方面是判斷的方法,另一方面是判斷的效率。 Java中有很多場景需要判斷兩個對象或者兩個值,那么 判斷是否相同的依據(jù)是什么? 如何判斷是否相同呢? 為了解釋這個問題,我們從Java語言的根說起,那...
摘要:所以在對象沒有重寫這個方法時,默認(rèn)使用此方法,即比較對象的內(nèi)存地址值。結(jié)果為可以發(fā)現(xiàn)不管對象的內(nèi)存地址是否相同并不影響其結(jié)果,所以類型比較的是數(shù)據(jù)值而不是內(nèi)存地址值。 showImg(https://segmentfault.com/img/bVbqpku?w=800&h=344); 今天朋友突然問到一個問題: 兩個對象使用x.equals(y)判斷結(jié)果為true時,兩個對象的hash...
摘要:簡單的一句話結(jié)論就是保證你定義的的對象擁有相同的。方法實(shí)現(xiàn)等價關(guān)系自反性。即一個對象必須等于其自身。對于任意引用值和返回真時,也一定為真?zhèn)鬟f性。發(fā)現(xiàn)一樣,調(diào)用方法繼續(xù)比較,發(fā)現(xiàn)個對象一樣。 簡單的一句話結(jié)論就是:保證你定義的equal的對象擁有相同的hash code。1)兩個對象equals()為真,則它們的hashCode() 一定相同2)兩個對象hashCode()相同,equa...
摘要:判斷另外一個對象是否與當(dāng)前對象相等返回當(dāng)前對象的哈希值返回一個表示當(dāng)前對象的字符串喚醒一個等待當(dāng)前對象的鎖監(jiān)視器的線程。 原文鏈接:http://www.javacodegeeks.com/2015/09/using-methods-common-to-all-objects.html 本文是Java進(jìn)階課程的第二篇。 本課程的目標(biāo)是幫你更有效的使用Java。其中討論了一些高級主題,包...
閱讀 2044·2021-11-19 11:37
閱讀 735·2021-11-11 16:54
閱讀 1183·2021-11-02 14:44
閱讀 3086·2021-09-02 15:40
閱讀 2386·2019-08-30 15:44
閱讀 974·2019-08-29 11:17
閱讀 1075·2019-08-26 14:06
閱讀 1569·2019-08-26 13:47