Penjelasan terperinci kaedah equals(Object) dalam Java dan senario penggunaannya
Di Java, kaedah equals(Object) ialah kaedah yang sangat penting, yang digunakan untuk membandingkan sama ada dua objek adalah sama. Dalam artikel ini, kami akan menerangkan secara terperinci senario dan prinsip penggunaan kaedah equals(Object), dan memperkenalkan beberapa teknik penggunaan biasa.
1. Prinsip kaedah equals(Object)
Di Java, semua kelas mewarisi daripada kelas Object, dan kaedah equals(Object) dalam kelas Object ialah pelaksanaan lalai. Kaedah equals(Object) dalam kelas Object sebenarnya membandingkan sama ada rujukan dua objek adalah sama, iaitu, sama ada kedua-dua objek adalah objek yang sama. Pelaksanaan khusus adalah seperti berikut:
public boolean equals(Object obj) {
return (this == obj);
Salin selepas log masuk
}
Dalam banyak kes, perkara yang perlu kita bandingkan ialah sama ada kandungan dua objek adalah sama, bukan hanya rujukan. Oleh itu, kita perlu mengatasi kaedah equals(Object) dalam kelas tersuai untuk memenuhi keperluan kita.
2. Senario penggunaan kaedah equals(Objek)
- Bandingkan nilai jenis asas
Apabila kita perlu membandingkan nilai dua jenis asas, kita boleh menggunakan operator == secara langsung. Sebagai contoh, bandingkan dua integer untuk kesamaan:
int a = 10;
int b = 10
jika (a == b) {
System.out.println("a和b相等");
Salin selepas log masuk
}
- Bandingkan nilai jenis rujukan
Apabila menggunakan dua nilai jenis rujukan, kaedah equals(Object) harus digunakan. Sebagai contoh, bandingkan dua rentetan untuk kesamaan:
String str1 = "Hello";
String str2 = "Hello";
if (str1.equals(str2)) {
System.out.println("str1和str2相等");
Salin selepas log masuk
Salin selepas log masuk
}
kelas
Apabila kita perlu membandingkan objek kelas tersuai, kita harus mengatasi kaedah equals(Object) dalam kelas untuk membandingkan kandungan objek. Contohnya, bandingkan dua objek Orang untuk kesaksamaan:
Orang kelas awam {
private String name; private int age; // 构造方法和其他方法省略 @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null || getClass() != obj.getClass()) { return false; } Person person = (Person) obj; return age == person.age && Objects.equals(name, person.name); }
Salin selepas log masuk
}
Orang orang1 = Orang baru("Zhang San", 20);
Orang orang2 = Orang baru("Zhang San", 20) ;
jika (orang1.sama dengan(orang2)) {
System.out.println("person1和person2相等");
Salin selepas log masuk
}
3 Petua untuk menggunakan kaedah sama dengan(Objek)
Ikuti kaedah sama dengan(Objek)
(apabila menulis semula sama. Kaedah Object) Apabila, anda perlu mengikut konvensyen kaedah equals(Object), iaitu syarat berikut dipenuhi:
Refleksitiviti: Untuk sebarang nilai rujukan bukan nol x, x.equals(x) harus kembali benar.
Simetri: Untuk sebarang nilai rujukan bukan nol x dan y, jika x.equals(y) mengembalikan benar, y.equals(x) juga harus mengembalikan true.
Transitiviti: Untuk sebarang nilai rujukan bukan nol x, y dan z, jika x.equals(y) mengembalikan benar dan y.equals(z) juga mengembalikan true, x.equals(z) juga harus kembali benar.
Ketekalan: Untuk sebarang nilai rujukan bukan nol x dan y, jika nilai dalam objek tidak berubah, hasil x.equals(y) hendaklah sentiasa konsisten.
Tidak boleh batal: Untuk sebarang nilai rujukan bukan nol x, x.equals(null) hendaklah mengembalikan palsu.
Gunakan kaedah Objects.equals
Apabila membandingkan kandungan objek, kita boleh menggunakan kaedah Objects.equals yang disediakan oleh Java, yang secara automatik akan mengendalikan kes nilai nol. Sebagai contoh, untuk membandingkan dua rentetan untuk kesamaan, anda boleh menggunakan kod berikut:
String str1 = "Hello";
String str2 = "Hello";
if (Objects.equals(str1, str2)) {
System.out.println("str1和str2相等");
Salin selepas log masuk
Salin selepas log masuk
}
NullPointerException boleh dielakkan dengan menggunakan kaedah Objects.equals.
4. Ringkasan
Artikel ini memperkenalkan kaedah equals(Object) dalam Java dan senario penggunaannya secara terperinci. Dalam pembangunan sebenar, kita sering perlu membandingkan sama ada kandungan dua objek adalah sama, jadi adalah sangat penting untuk mengatasi kaedah equals(Object). Dengan mengikuti konvensyen kaedah equals(Object) dan menggunakan kaedah Objects.equals, kita boleh membandingkan kandungan objek dengan lebih tepat dan selamat. Saya harap artikel ini akan membantu anda memperoleh pemahaman yang lebih mendalam tentang kaedah equals(Object) dan senario penggunaannya.
Atas ialah kandungan terperinci Penjelasan terperinci tentang penggunaan dan senario yang boleh digunakan bagi kaedah equals di Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!