Java 物件的雜湊碼透過以下公式產生:h = (h
Java 中物件的雜湊碼是如何產生的?
雜湊碼是儲存在 Java 物件內部的 int 值,用於快速識別和尋找物件。它由以下公式產生:
hashCode = (h << 5) - h + 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中文網其他相關文章!