首頁 > Java > java教程 > 主體

當「hashCode()」方法未被重寫時,它在 Java 中的行為如何?

Barbara Streisand
發布: 2024-11-03 00:36:02
原創
880 人瀏覽過

How does the `hashCode()` method behave in Java when it's not overridden?

Java 中的物件雜湊程式碼預設行為

如果Java 物件中未明確重寫hashCode() 方法,則呼叫hashCode ()該物件會根據Java 虛擬機器的實作產生特定結果(JVM).

HotSpot JVM 預設行為

在HotSpot JVM 中,預設行為如下:

  • 第一次呼叫: 產生一個隨機數並儲存在物件中
  • 後續呼叫:從物件頭部擷取隨機數。

預設情況下,該隨機數與物件的內容沒有關聯,或位置。

可自訂行為

hashCode() 方法的行為可以使用 -XX:hashCode=n HotSpot JVM 選項進行自訂。此選項採用以下值:

  • 0:全域隨機產生器(Java 7 中預設)
  • 5:執行緒本地異或移位隨機產生器(Java 8 中預設)
  • 1:物件指標與隨機值混合(在停止世界事件之間保持穩定)
  • 2:總是1
  • 3:自動遞增數字
  • 4:物件指標修剪為32 位元

特殊注意事項

  • 即使使用-XX:hashCode=4,雜湊碼也可能並不總是指向對像地址。物件創建後可以移動,但雜湊碼保持不變。
  • 物件位址可能分佈不均,使用 -XX:hashCode=4 選項時會導致雜湊表不平衡。

以上是當「hashCode()」方法未被重寫時,它在 Java 中的行為如何?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板