Apa perbandingan antara Equals dan ==?
1. Boolean Tem = A == B;
Pertama -tama, == Perbandingannya pasti alamatnya. Dari perspektif tumpukan, yaitu, == Perbandingannya adalah konten pada tumpukan. Karena tumpukan digunakan untuk menyimpan nilai literal dari variabel otomatis dalam delapan tipe dasar di java (variabel otomatis adalah variabel yang didefinisikan dalam bentuk int a = 1;). Jika itu adalah nilai perbandingan variabel otomatis, itu pasti digunakan untuk membandingkannya dengan ==, karena sama () adalah metode, jadi itu harus dipanggil oleh objek yang akan digunakan untuk perbandingan. Variabel otomatis bukanlah contoh kelas atau referensi kelas, sehingga metode Equals () tidak dapat digunakan.
2.Boolean Tem = A.Equals ("B");
Metode Equals () umumnya digunakan untuk membandingkan konten suatu objek, tetapi dalam beberapa kasus juga membandingkan alamat dua objek.
Berikutnya
Tulis Program Uji
paket com; import java.util.date; tes kelas publik {public static void main (string [] args) {integer integer1 = new integer (1); Integer integer2 = integer baru (1); String str1 = string baru ("123"); String str2 = string baru ("123"); Tanggal Tanggal1 = Tanggal Baru (); Tanggal Tanggal2 = Tanggal Baru (); Double1 = double baru ("1.0"); Double2 double2 = double baru ("1.0"); Boolean tem1 = boolean baru (true); Boolean tem2 = boolean baru (true); Objek objek1 = objek baru (); Objek objek2 = objek baru (); System.out.println ("---- objek -------"); System.out.println (Object1.Equals (Object2)); System.out.println (Object1 == Object2); System.out.println (Object1.Equals (Object1)); System.out.println (Object1 == Object1); System.out.println ("-----------"); System.out.println (Tem1.Equals (Tem2)); System.out.println (tem1 == TEM2); System.out.println ("--- Double --------"); System.out.println (double1.equals (double2)); System.out.println (double1 == double2); System.out.println ("---- Integer -------"); System.out.println (integer1.equals (integer2)); System.out.println (integer1 == integer2); System.out.println ("-----------"); System.out.println (str1.equals (str2)); System.out.println (str1 == str2); System.out.println ("-----------"); System.out.println ("-----------"); System.out.println (str1 == str2); System.out.println ("-----------"); System.out.println (Date1.Equals (Date2)); System.out.println (Date1 == Date2); }}hasil:
---Obyek-----
PALSU
PALSU
BENAR
BENAR
--- boolean -----
BENAR
PALSU
---Dobel-----
BENAR
PALSU
---Bilangan bulat-----
BENAR
PALSU
---Rangkaian-----
BENAR
PALSU
---Tanggal-----
BENAR
PALSU
Pertama, ketika dua objek yang dibandingkan adalah sama, hasil == dan sama () benar, dan ketika kedua objek berbeda, mereka dikembalikan salah. Jadi ketika == dan sama digunakan untuk membandingkan objek, mereka membandingkan alamat objek, tetapi pada kenyataannya esensinya sama. Berikut adalah kode dari metode Equals () di kelas objek:
public boolean sama (objek obj) {return (this == obj); }Untuk boolean, ganda (float), interger (bidikan, panjang), string, dan tanggal, saya juga menemukan kode sumbernya. Di bawah ini saya memposting kode sumber dari metode Equals () dalam Boolean, Double, Interger, String, dan Tanggal. Pada saat ini, metode Equals () ditulis ulang karena kelas -kelas ini diwarisi dari kelas objek.
Boolean:
public boolean sama (objek obj) {if (instance Obj dari boolean) {value return == ((boolean) obj) .booleanValue (); } return false; }Dobel:
Public Boolean Equals (Object Obj) {return (obj instance dari double) && (doubleToLongBits ((((double) obj) .value) == doubleToLongBits (value))); }Interger:
public boolean sama (objek obj) {if (obj instance dari integer) {return value == ((integer) obj) .IntValue (); } return false; } Rangkaian:
public boolean sama (objek anobject) {if (this == anObject) {return true; } if (anobject instance dari 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 ++; } return true; }} return false; }Tanggal:
public boolean sama (objek obj) {return obj instance dari tanggal && getTime () == ((tanggal) obj) .getTime (); }Dengan kata lain, pada waktu ini, metode Equals () dari kelas objek ditulis ulang untuk membandingkan konten aktual dari dua objek dan tidak lagi alamatnya. Tentu saja, itu jelas bukan hanya ini. Berikut adalah beberapa kasus umum di mana kelas asli Java menulis ulang metode Equals () dari kelas objek.
Terima kasih telah membaca, saya harap ini dapat membantu Anda. Terima kasih atas dukungan Anda untuk situs ini!