首頁 > Java > java教程 > 主體

Java中物件的雜湊碼是如何產生的?

PHPz
發布: 2024-04-11 18:45:01
原創
962 人瀏覽過

Java 物件的雜湊碼透過以下公式產生:h = (h

Java中物件的雜湊碼是如何產生的?

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() 方法以產生自訂的雜湊碼,根據nameage 屬性雜湊碼計算。

Person p1 = new Person("John", 25);
Person p2 = new Person("John", 25);

System.out.println(p1.hashCode() == p2.hashCode()); // 输出:true
登入後複製

在上面的案例中,儘管 p1p2 是不同的對象,但由於它們具有相同的屬性,因此雜湊碼是相同的。

以上是Java中物件的雜湊碼是如何產生的?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!