Perbezaan antara sama dan sama dalam Java memerlukan contoh kod khusus
Di Jawa, kita selalunya perlu membandingkan sama ada dua objek adalah sama. Dalam kes ini kita biasanya menggunakan kaedah sama atau kaedah sama di Jawa. Walaupun mereka kelihatan serupa, mereka mempunyai beberapa perbezaan penting. Artikel ini akan memperkenalkan perbezaan antara sama dan sama dan menerangkannya melalui contoh kod tertentu.
Pertama, mari kita lihat kaedah yang sama. Kaedah yang sama ialah kaedah dalam kelas Objek, dan semua objek dalam Java boleh memanggil kaedah ini. Kaedah ini menggunakan perbandingan rujukan, iaitu untuk menentukan sama ada dua objek mempunyai rujukan yang sama. Dua objek adalah sama jika rujukannya adalah sama. Berikut ialah contoh kod:
String str1 = new String("Hello"); String str2 = new String("Hello"); boolean result = str1.equals(str2); System.out.println(result); // 输出结果为 true
Dalam kod di atas, kami mencipta dua objek rentetan str1 dan str2, yang kedua-duanya mempunyai nilai "Hello". Walau bagaimanapun, kedua-dua objek ini dicipta secara berasingan melalui kata kunci baharu, jadi rujukannya berbeza. Walau bagaimanapun, memandangkan kelas String mengatasi kaedah equals, apabila kita memanggil str1.equals(str2), ia akan kembali benar, menunjukkan bahawa dua rentetan adalah sama.
Seterusnya, mari kita lihat kaedah equals. Kaedah equals ialah kaedah awam bagi kelas Object Kita boleh mengatasinya untuk membandingkan kandungan dua objek. Secara lalai, kaedah equals masih menggunakan perbandingan rujukan. Jika kita ingin menyesuaikan peraturan perbandingan, kita mesti mengatasi kaedah equals. Berikut ialah kod sampel:
public class Person { 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; if (age != person.age) { return false; } return name != null ? name.equals(person.name) : person.name == null; } // 省略hashCode方法和其他方法 }
Dalam kod sampel di atas, kami mencipta kelas Orang dan mengatasi kaedah yang sama. Apabila mengatasi kaedah equals, kita mula-mula menentukan sama ada rujukan kedua-dua objek adalah sama Jika ia adalah sama, kita boleh kembali benar. Kemudian kita tentukan sama ada obj kosong dan tergolong dalam kelas yang sama, kemudian tukar obj kepada jenis Orang, dan bandingkan sama ada nilai nama dan umur adalah sama.
Berikut ialah contoh kod untuk menggunakan Orang:
Person person1 = new Person("Tom", 20); Person person2 = new Person("Tom", 20); boolean result = person1.equals(person2); System.out.println(result); // 输出结果为 true
Dalam kod di atas, kami mencipta dua objek Orang person1 dan person2, yang nama dan nilai umurnya adalah sama. Apabila kita memanggil person1.equals(person2), kerana kita telah menulis semula kaedah equals, nilai nama dan umur akan dibandingkan semasa perbandingan, jadi hasil yang dikembalikan adalah benar.
Ringkasnya, sama dan sama adalah kaedah yang biasa digunakan di Jawa untuk membandingkan sama ada objek adalah sama. Kaedah sama ialah kaedah kelas Objek, yang menentukan sama ada dua objek adalah sama melalui perbandingan rujukan; kaedah sama ialah kaedah perbandingan tersuai yang membolehkan anda menyesuaikan peraturan perbandingan. Dalam pembangunan sebenar, kita harus memilih untuk menggunakan kedua-dua kaedah ini untuk membandingkan objek mengikut keperluan tertentu.
Atas ialah kandungan terperinci Bezakan antara kaedah sama dan kaedah sama di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!