Mari kita lihat contoh terlebih dahulu:
Salinan kode adalah sebagai berikut:
paket com.amos;
/**
* @ClassName: EqualTest
* @Description: Perbandingan Equal dan == di Java
* @Author: Amosli
*/
kelas publik equaltest {
public static void main (string [] args) {
int a = 1;
float b = 1.0f;
System.out.println (a == b); // true
String c = string baru ("hi_amos");
String d = string baru ("hi_amos");
System.out.println (c == d); // false
System.out.println (C.Equals (D)); // Benar
}
}
Ada dua cara utama untuk menilai apakah dua variabel sama di Java: satu adalah menggunakan operator ==, dan yang lainnya adalah menggunakan metode yang sama untuk menentukan apakah keduanya sama.
1). Saat menggunakan == untuk menentukan apakah dua variabel sama, jika kedua variabel tersebut adalah variabel tipe dasar dan keduanya merupakan tipe numerik, tipe data tidak harus sama -sama sama. Dua variabel sama, benar akan dikembalikan.
2). Jika untuk dua variabel jenis referensi, mereka harus menunjuk ke suatu objek, maka == penilaian akan mengembalikan true. == tidak dapat digunakan untuk membandingkan dua objek tanpa hubungan orangtua-anak pada tipe tersebut.
Seperti disebutkan di atas, ketika string baru yang sama dijelaskan, == menentukan apakah hal yang sama mengembalikan false, sementara sama dengan mengembalikan true.
Kelas string yang ditargetkan oleh metode Equals, periksa kode sumbernya dan Anda dapat menemukan bahwa Equals hanya dapat dianggap sebagai kasus khusus ==.
Salinan kode adalah sebagai berikut:
Public Boolean Equals (Object Anobject) {
if (this == anObject) {
Kembali Benar;
}
if (anobject instanceof string) {
String anotherstring = (string) anObject;
int n = value.length;
if (n == anotherstring.value.length) {
char v1 [] = nilai;
char v2 [] = anotherstring.value;
int i = 0;
while (n--! = 0) {
if (v1 [i]! = v2 [i])
mengembalikan false;
i ++;
}
Kembali Benar;
}
}
mengembalikan false;
}
Metode yang sama sebenarnya menyebut formula diskriminan == dari awal, dan kemudian menentukan apakah nilainya lebih lanjut benar.