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