Apabila membandingkan objek dalam bahasa pengaturcaraan, adalah penting untuk membezakan antara kesamaan rujukan dan kesamaan nilai. Perbezaan ini timbul antara pengendali == dan Equals/equals.
Kesamaan Rujukan dengan ==
Operator == dalam kedua-dua Java dan C# (kecuali ditindih) berfungsi kesamarataan rujukan. Ia menilai sama ada dua objek berkongsi lokasi memori yang sama. Ini bermakna == akan mengembalikan benar jika objek adalah tika yang sama dan palsu jika ia adalah tika yang berbeza.
Kesamaan Nilai dengan Sama/sama
Sebaliknya, kaedah Equals/equals membandingkan nilai dua objek. Pelaksanaan lalai dalam kelas Objek menyemak kesamaan rujukan, tetapi ia boleh ditindih oleh kelas terbitan untuk melaksanakan kesamaan nilai. Ini bermakna Equals/equals boleh mengembalikan benar walaupun objek adalah kejadian yang berbeza tetapi mempunyai nilai yang sama.
Perbezaan Utama
Feature | Reference Equality (==) | Value Equality (Equals/equals) |
---|---|---|
Comparison | Memory location | Value |
Overloading | Not supported | Supported in C# for some types |
Null values | Throws an exception if one object is null | Treats null as an unequal value |
Object class implementation | Identity comparison | Identity comparison |
Potential for overrides | No | Yes |
Contoh
Pertimbangkan Java berikut kod:
String str1 = "Hello"; String str2 = new String("Hello"); System.out.println(str1 == str2); // false (reference equality) System.out.println(str1.equals(str2)); // true (value equality)
Dalam contoh ini, == mengembalikan palsu kerana str1 dan str2 adalah kejadian yang berbeza, walaupun ia mempunyai nilai yang sama. Walau bagaimanapun, Equals mengembalikan benar kerana ia membandingkan nilai.
Kesimpulan
Memahami perbezaan antara kesamaan rujukan (==) dan kesamaan nilai (Equals/equals) adalah penting untuk perbandingan objek tepat dalam Java dan C#. Dengan memanfaatkan pengendali ini dengan sewajarnya, anda boleh memastikan tingkah laku yang betul dan mengelakkan hasil yang tidak dijangka dalam kod anda.
Atas ialah kandungan terperinci Apakah Perbezaan Antara `==` dan `Equals()` untuk Perbandingan Objek?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!