Rumah  >  Artikel  >  Java  >  Bagaimanakah kod cincang objek dijana dalam Java?

Bagaimanakah kod cincang objek dijana dalam Java?

PHPz
PHPzasal
2024-04-11 18:45:01914semak imbas

Kod cincang objek Java dijana oleh formula berikut: h = (h

Bagaimanakah kod cincang objek dijana dalam Java?

Bagaimana kod cincang objek dijana dalam Java?

Kod cincang ialah nilai int yang disimpan di dalam objek Java dan digunakan untuk mengenal pasti dan mencari objek dengan cepat. Ia dijana oleh formula berikut:

hashCode = (h << 5) - h + x

di mana:

  • h ialah hasil kod cincang sebelumnya yang dibiarkan dialihkan sebanyak 5 bit dan dijumlahkan dengan kod cincang asal (nilai awal ialah 0)
  • x ialah objek Kod cincang nilai hartanah atau penunjuk

Untuk jenis primitif, kod cincang disimpan terus dalam objek, seperti:

int i = 10;
System.out.println(i.hashCode()); // 输出:10

Untuk jenis rujukan, kod cincang dijana berdasarkan kod cincang senarai objeknya, di mana:

hashCode = (hashcode1 * 31) + (hashcode2 * 31) + ... + (hashcodeN * 31)

31 ialah nombor perdana, dipanggil "nombor ajaib", yang membantu mengurangkan perlanggaran cincang.

Kes praktikal

Pertimbangkan kelas Orang berikut: 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

在上面的案例中,尽管 p1p2rrreee

Kelas ini mengatasi kaedah hashCode() untuk menjana kod cincang tersuai, mengikut Nama dan age pengiraan kod cincang atribut. 🎜rrreee🎜Dalam kes di atas, walaupun p1 dan p2 ialah objek yang berbeza, kod cincang adalah sama kerana ia mempunyai sifat yang sama. 🎜

Atas ialah kandungan terperinci Bagaimanakah kod cincang objek dijana dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn