Rumah >Java >javaTutorial >Bagaimana untuk menggunakan fungsi equals() kelas Objek di Jawa untuk membandingkan sama ada dua objek adalah sama

Bagaimana untuk menggunakan fungsi equals() kelas Objek di Jawa untuk membandingkan sama ada dua objek adalah sama

PHPz
PHPzasal
2023-07-24 20:00:171869semak imbas

Bagaimanakah Java menggunakan fungsi equals() kelas Objek untuk membandingkan sama ada dua objek adalah sama?

Dalam Java, fungsi equals() ialah kaedah yang digunakan untuk membandingkan sama ada dua objek adalah sama. Semua kelas Java mewarisi daripada kelas Objek, jadi semua objek boleh dibandingkan menggunakan fungsi equals(). Walau bagaimanapun, untuk membandingkan dua objek dengan betul untuk kesamaan, anda perlu mengatasi kaedah equals() dalam kelas tersuai anda.

Pelaksanaan lalai kaedah equals() dalam kelas Object menggunakan kesamaan rujukan untuk perbandingan. Iaitu, kaedah equals() akan kembali benar hanya apabila dua objek merujuk kepada alamat memori yang sama. Ini bukan tingkah laku yang kita mahu dalam kebanyakan kes. Biasanya, kami ingin membandingkan kandungan dua objek untuk kesamaan.

Untuk mencapai matlamat ini, kita perlu mengatasi kaedah equals() dalam kelas tersuai. Apabila mengatasi kaedah equals(), anda perlu memberi perhatian kepada perkara berikut:

  1. Mula-mula, anda perlu menyemak sama ada objek yang masuk adalah batal. Jika objek yang dilalui adalah nol, false dikembalikan secara langsung.
  2. Kedua, anda perlu menyemak sama ada objek yang diluluskan adalah contoh kelas semasa. Jika ia bukan contoh kelas yang sama, kembalikan palsu secara langsung.
  3. Akhir sekali, kita boleh membandingkan sifat dua objek untuk kesamaan mengikut keperluan. Kaedah perbandingan bergantung kepada keadaan sebenar.

Berikut ialah contoh mudah, kami menggunakan kelas Person untuk menunjukkan cara mengatasi kaedah equals():

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public boolean equals(Object obj) {
        // 检查传入的对象是否为null
        if (obj == null) {
            return false;
        }
        
        // 检查传入的对象是否是Person类的实例
        if (!(obj instanceof Person)) {
            return false;
        }
        
        // 比较两个对象的属性是否相等
        Person other = (Person) obj;
        return this.name.equals(other.name) && this.age == other.age;
    }
}

Dalam contoh di atas, kami mengatasi kaedah equals() kelas Person. Mula-mula, kami menyemak sama ada objek yang masuk adalah batal, dan jika ya, kembalikan palsu secara langsung. Kemudian, kami menggunakan pengendali instanceof untuk menyemak sama ada objek masuk adalah contoh kelas Orang, dan jika tidak, kembali palsu secara langsung. Akhir sekali, kami membandingkan nama dan sifat umur kedua-dua objek untuk melihat sama ada ia adalah sama.

Seterusnya, kita boleh menggunakan kaedah equals() untuk membandingkan sama ada dua objek Orang adalah sama:

public class Main {
    public static void main(String[] args) {
        Person person1 = new Person("Alice", 25);
        Person person2 = new Person("Bob", 30);
        Person person3 = new Person("Alice", 25);

        System.out.println(person1.equals(person2)); // false
        System.out.println(person1.equals(person3)); // true
    }
}

Dalam contoh di atas, kami mencipta tiga objek Orang. Dengan memanggil kaedah equals() untuk membandingkan person1 dan person2, hasilnya adalah palsu kerana nama dan atribut umur mereka tidak sama. Dengan memanggil kaedah equals() untuk membandingkan person1 dan person3, hasilnya adalah benar kerana nama dan atribut umur mereka adalah sama.

Melalui contoh di atas, kita boleh melihat cara menggunakan kaedah equals() kelas Object untuk membandingkan sama ada dua objek adalah sama. Apabila mengatasi kaedah equals(), kita boleh menentukan sama ada objek adalah sama berdasarkan sifatnya untuk memenuhi keperluan sebenar kita.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan fungsi equals() kelas Objek di Jawa untuk membandingkan sama ada dua objek adalah sama. 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