溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java的hash值指的是什么

發(fā)布時間:2020-11-06 11:24:18 來源:億速云 閱讀:242 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關java的hash值指的是什么的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

 hash值(hashcode)可以理解為唯一編碼、摘要值等,具體實現(xiàn)可能是內(nèi)存地址,在java中可用于識別兩個變量是否其實是同個對象。同個對象則此刻的值必定相等,但不同對象也可以是數(shù)值相等。下面一起來詳細了解一下吧。

hash值(hashcode)在不同類中:

1、Object類的hashCode:返回對象的內(nèi)存地址經(jīng)過處理后的結構,由于每個對象的內(nèi)存地址都不一樣,所以哈希碼也不一樣。

兩個對象要完全相對必須哈希值一樣。比較用equal()

PS1:任何類均為Object類的間接子類,所以均繼承方法public int hashCode(),該方法返回的值一般是通過將該對象的內(nèi)部地址轉(zhuǎn)換成一個整數(shù)來實現(xiàn)的。這樣能保證每個對象的哈希碼值不一樣

PS2:這里的地址是指JVM虛擬出來的內(nèi)存地址,不是實際物理內(nèi)存地址。

PS3:哈希值和地址值是不一樣的,哈希值是通過哈希算法散列得來的,而地址值是通過是和物理層面有關,是系統(tǒng)分配的,是不存在相同的,而哈希值是可以通過強制手段設置為相同的,也就是說哈希值是一種邏輯上的確保唯一性,而地址值就是物理上確保唯一性。

2、String類的hashCode:根據(jù)String類包含的字符串的內(nèi)容,根據(jù)一種特殊算法返回哈希碼,只要字符串內(nèi)容相同,返回的哈希碼也相同。

比較字符串內(nèi)容相等。用equal()

3、Integer類的hashCode:返回的哈希碼就是Integer對象里所包含的那個整數(shù)的數(shù)值。

例如,Integer i1=new Integer(100),i1.hashCode的值就是100 。

由此可見,2個一樣大小的Integer對象,返回的哈希碼也一樣。

比較包裝數(shù)值類型相等。用equal()

感謝各位的閱讀!關于java的hash值指的是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI