Rumah  >  Artikel  >  Java  >  Apakah Perbezaan Antara `==` dan `Equals()` untuk Perbandingan Objek?

Apakah Perbezaan Antara `==` dan `Equals()` untuk Perbandingan Objek?

Patricia Arquette
Patricia Arquetteasal
2024-11-26 02:14:11239semak imbas

What's the Difference Between `==` and `Equals()` for Object Comparison?

Memahami Perbezaan Antara == dan Sama/sama

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!

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