Memahami Perbezaan antara ".equals" dan "=="
Arahan pensyarah anda untuk menggunakan .equals dan bukannya == dalam Java menimbulkan perbezaan penting antara kesamaan rujukan dan kesamaan nilai.
Rujukan Kesamaan (==)
Pengendali == membandingkan rujukan yang dikaitkan dengan dua objek. Ia menyemak sama ada kedua-dua objek merujuk kepada lokasi memori yang sama. Ini terpakai kepada jenis bukan primitif (seperti String, Integer, dll.), di mana setiap objek mempunyai rujukan unik.
Contoh:
Integer o1 = 10; Integer o2 = 10; System.out.println(o1 == o2); // false
Walaupun o1 dan o2 memegang nilai yang sama, ia bukanlah objek yang sama dalam ingatan. Oleh itu, == mengembalikan palsu.
Kesamaan Nilai (.sama)
Kaedah .equals, sebaliknya, membolehkan anda membandingkan nilai objek. Ia menyemak sama ada dua objek mempunyai kandungan yang sama, tanpa mengira rujukannya.
Contoh:
String x = "hello"; String y = new String("hello"); System.out.println(x.equals(y)); // true
Di sini, x dan y ialah objek yang berbeza tetapi mempunyai yang sama nilai. .equals membandingkan nilainya dan mengembalikan true.
Mengatasi .equals Kaedah:
Selain itu, .equals boleh ditindih dalam kelas tersuai, membolehkan anda menentukan logik anda sendiri untuk perbandingan nilai. Ini membolehkan anda menyesuaikan gelagat kesamarataan untuk jenis tertentu.
Mengapa .equals Diutamakan:
Menggunakan .equals biasanya lebih diutamakan daripada == atas sebab berikut:
Dalam contoh pensyarah anda, .equals disyorkan untuk membandingkan dua objek integer kerana ia memastikan bahawa objek mempunyai nilai yang sama, walaupun ia merujuk kepada lokasi memori yang berbeza.
Atas ialah kandungan terperinci Bilakah Saya Harus Menggunakan `.equals()` Daripada `==` dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!