Java中物件的雜湊碼是如何產生的?
Java 物件的雜湊碼透過以下公式產生:h = (h
Java 中物件的雜湊碼是如何產生的?
雜湊碼是儲存在 Java 物件內部的 int 值,用於快速識別和尋找物件。它由以下公式產生:
hashCode = (h << 5) - h + x
其中:
- h 是先前雜湊碼的左移5 位元後與原始雜湊碼求和的結果(初步值為0)
- x 是物件屬性值或指標的雜湊碼
對於基本類型,雜湊碼直接儲存在物件中,如:
int i = 10; System.out.println(i.hashCode()); // 输出:10
對於引用類型,雜湊碼基於其物件的雜湊碼列表生成,其中:
hashCode = (hashcode1 * 31) + (hashcode2 * 31) + ... + (hashcodeN * 31)
其中31 是素數,稱為“魔數”,有幫助於減少哈希碰撞。
實戰案例
考慮以下Person
類別:
class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public int hashCode() { int hash = 0; if (name != null) { hash += name.hashCode() * 31; } hash += age * 31; return hash; } }
此類覆寫了hashCode()
方法以產生自訂的雜湊碼,根據name
和age
屬性雜湊碼計算。
Person p1 = new Person("John", 25); Person p2 = new Person("John", 25); System.out.println(p1.hashCode() == p2.hashCode()); // 输出:true
在上面的案例中,儘管 p1
和 p2
是不同的對象,但由於它們具有相同的屬性,因此雜湊碼是相同的。
以上是Java中物件的雜湊碼是如何產生的?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

Java 8引入了Stream API,提供了一種強大且表達力豐富的處理數據集合的方式。然而,使用Stream時,一個常見問題是:如何從forEach操作中中斷或返回? 傳統循環允許提前中斷或返回,但Stream的forEach方法並不直接支持這種方式。本文將解釋原因,並探討在Stream處理系統中實現提前終止的替代方法。 延伸閱讀: Java Stream API改進 理解Stream forEach forEach方法是一個終端操作,它對Stream中的每個元素執行一個操作。它的設計意圖是處

膠囊是一種三維幾何圖形,由一個圓柱體和兩端各一個半球體組成。膠囊的體積可以通過將圓柱體的體積和兩端半球體的體積相加來計算。本教程將討論如何使用不同的方法在Java中計算給定膠囊的體積。 膠囊體積公式 膠囊體積的公式如下: 膠囊體積 = 圓柱體體積 兩個半球體體積 其中, r: 半球體的半徑。 h: 圓柱體的高度(不包括半球體)。 例子 1 輸入 半徑 = 5 單位 高度 = 10 單位 輸出 體積 = 1570.8 立方單位 解釋 使用公式計算體積: 體積 = π × r2 × h (4
