您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關java的hash值指的是什么的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
hash值(hashcode)可以理解為唯一編碼、摘要值等,具體實現可能是內存地址,在java中可用于識別兩個變量是否其實是同個對象。同個對象則此刻的值必定相等,但不同對象也可以是數值相等。下面一起來詳細了解一下吧。
hash值(hashcode)在不同類中:
1、Object類的hashCode:返回對象的內存地址經過處理后的結構,由于每個對象的內存地址都不一樣,所以哈希碼也不一樣。
兩個對象要完全相對必須哈希值一樣。比較用equal()
PS1:任何類均為Object類的間接子類,所以均繼承方法public int hashCode(),該方法返回的值一般是通過將該對象的內部地址轉換成一個整數來實現的。這樣能保證每個對象的哈希碼值不一樣
PS2:這里的地址是指JVM虛擬出來的內存地址,不是實際物理內存地址。
PS3:哈希值和地址值是不一樣的,哈希值是通過哈希算法散列得來的,而地址值是通過是和物理層面有關,是系統分配的,是不存在相同的,而哈希值是可以通過強制手段設置為相同的,也就是說哈希值是一種邏輯上的確保唯一性,而地址值就是物理上確保唯一性。
2、String類的hashCode:根據String類包含的字符串的內容,根據一種特殊算法返回哈希碼,只要字符串內容相同,返回的哈希碼也相同。
比較字符串內容相等。用equal()
3、Integer類的hashCode:返回的哈希碼就是Integer對象里所包含的那個整數的數值。
例如,Integer i1=new Integer(100),i1.hashCode的值就是100 。
由此可見,2個一樣大小的Integer對象,返回的哈希碼也一樣。
比較包裝數值類型相等。用equal()
感謝各位的閱讀!關于java的hash值指的是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。