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

Bagaimanakah kod cincang objek dijana dalam Java?

PHPz
Lepaskan: 2024-04-11 18:45:01
asal
1020 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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

hashCode = (hashcode1 * 31) + (hashcode2 * 31) + ... + (hashcodeN * 31)
Salin selepas log masuk

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;
    }
}
Salin selepas log masuk

此类覆盖了 hashCode() 方法以生成定制的哈希码,根据 nameage 属性哈希码计算。

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

System.out.println(p1.hashCode() == p2.hashCode()); // 输出:true
Salin selepas log masuk

在上面的案例中,尽管 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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Isu terkini
Bolehkah java digunakan sebagai bahagian belakang web?
daripada 1970-01-01 08:00:00
0
0
0
Tidak dapat memasang java
daripada 1970-01-01 08:00:00
0
0
0
Pasang JAVA
daripada 1970-01-01 08:00:00
0
0
0
Bagaimanakah php melaksanakan penyulitan sha1 java?
daripada 1970-01-01 08:00:00
0
0
0
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan