在Java 中,hashCode() 方法在決定物件的唯一識別碼方面起著至關重要的作用。作為一種固有方法,其行為可能會有所不同,這取決於它是否被物件的類別覆蓋。讓我們來探索一下在不受影響的情況下 hashCode() 的預設實作。
如果沒有重寫hashCode() 方法,HotSpot JVM(廣泛使用的Java)採用一種機制來產生隨機數並將其儲存在對象的標頭中。在隨後呼叫 hashCode() 時,將簡單地檢索該隨機數。此行為旨在為物件提供不可預測且唯一的標識符,與其內容或位置沒有任何關聯。
可以控制雜湊程式碼的產生策略透過-XX:hashCode=n HotSpot JVM 選項:
需要注意的是,由於可能的物件重定位,即使使用 -XX:hashCode=4 產生的雜湊碼也可能無法直接反映物件的記憶體位址。另外,如果物件位址分佈不好,可能會出現不平衡的雜湊表。
以上是當 Java 物件的 `hashCode()` 未被重寫時會發生什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!