Rumah >pembangunan bahagian belakang >C++ >Apakah Perbezaan Antara `==` dan `Equals()`/`equals()` dalam Java dan C#?
Terokai secara mendalam perbezaan antara ==
dan Equals()
/equals()
dalam Java dan C#
Dalam pengaturcaraan, pengendali kesaksamaan adalah penting dalam perbandingan nilai. Soalan biasa ialah perbezaan antara operator ==
dan kaedah Equals
atau equals
.
Untuk jenis rujukan (objek) dalam Java dan C#, operator ==
menyemak sama ada dua pembolehubah merujuk kepada objek yang sama, iaitu kesamaan rujukan. Sebaliknya, Equals
atau equals
memanggil kaedah maya yang ditakrifkan dalam kelas Object
, yang biasanya mengesahkan identiti tetapi boleh ditindih oleh jenis tertentu, dengan itu melaksanakan semakan kesamaan nilai.
Pelaksanaan Java
Di Java, ==
sentiasa menyemak kesamaan rujukan, yang bermaksud ia menentukan sama ada dua rujukan menghala ke objek yang sama. Tiada pengendali yang ditakrifkan pengguna membebankan di Java, jadi kelakuannya tetap sama.
Fleksibiliti C#
C# memberikan fleksibiliti yang lebih besar berbanding. ==
Kesamaan rujukan dikuatkuasakan secara lalai. Walau bagaimanapun, jika lebihan wujud untuk pembolehubah jenis masa kompilasi tertentu (contohnya, rentetan), lebihan itu akan dilaksanakan. Lebihan beban ini boleh menentukan tingkah lakunya sendiri, biasanya melaksanakan kesamaan nilai, di mana dua rujukan berbeza boleh mempunyai nilai yang sama.
Equals
dan equals
Dalam Java dan C#, a.Equals(b)
atau a.equals(b)
memanggil kaedah Object
atau Equals
maya yang diwarisi daripada kelas equals
. Kaedah ini menyemak identiti secara lalai. Walau bagaimanapun, ia boleh ditindih dalam jenis tertentu untuk membolehkan perbandingan nilai tersuai, bergantung pada jenis masa jalan objek yang dirujuk.
Mengendalikan nilai nol
Perhatikan bahawa percubaan untuk menggunakan Equals
atau equals
dengan rujukan nol akan menghasilkan NullReferenceException
atau NullPointerException
.
Atas ialah kandungan terperinci Apakah Perbezaan Antara `==` dan `Equals()`/`equals()` dalam Java dan C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!