Perbedaan antara Equals dan == di Java
Jenis data di Java dapat dibagi menjadi dua kategori:
1. Jenis data dasar, juga dikenal sebagai tipe data primitif. byte, pendek, char, int, long, float, double, boolean
Perbandingan di antara mereka, menerapkan tanda ganda (==), dibandingkan dengan nilainya.
2. Tipe Data (Kelas)
Ketika mereka membandingkan dengan (==), mereka membandingkan alamat penyimpanan mereka dalam memori. Oleh karena itu, kecuali mereka adalah objek dari yang baru, hasil setelah perbandingan adalah benar, jika tidak hasilnya setelah perbandingan salah. Semua kelas di Java mewarisi dari objek kelas dasar. Metode setara didefinisikan dalam kelas dasar dalam objek. Perilaku awal dari metode ini adalah alamat memori dari objek perbandingan, tetapi di beberapa pustaka kelas, metode ini ditimpa. Misalnya, string, integer, dan tanggal memiliki implementasi sendiri di kelas -kelas ini, dan tidak lagi merupakan alamat penyimpanan kelas perbandingan dalam memori heap.
Untuk sama dengan perbandingan antara tipe data komposit, tanpa menimpa metode yang sama, perbandingannya didasarkan pada nilai alamat lokasi penyimpanan mereka dalam memori. Karena metode yang sama dari objek juga dibandingkan dengan tanda ganda yang sama (==), sehingga hasilnya setelah perbandingan sama dengan hasil dari tanda ganda yang sama (==).
Perbedaan antara java sama dan =, ==
1. Perbedaan antara == dan sama
1. == adalah operator
2. Equals adalah metode objek string
Umumnya ada dua jenis perbandingan
1. Perbandingan tipe data dasar
2. Perbandingan objek referensi
1. Perbandingan tipe data dasar
== dan sama dengan membandingkan apakah nilai -nilai itu sama, jika sama, itu benar, jika tidak, itu salah
2. Perbandingan objek referensi
== dan sama keduanya dibandingkan dengan apakah alamat dalam memori tumpukan sama. Jika sama, itu benar, jika tidak itu salah.
Melihat:
1. String adalah tipe data referensi khusus. == Membandingkan apakah alamat referensi dari objek string adalah sama, dan sama dengan membandingkan apakah konten dalam tumpukan konsisten.
String ss = string baru ("ABC"); String sss = string baru ("ABC"); if (ss == sss) {system.out.println ("ss == sss benar"); } if (ss.equals (sss)) {System.out.println ("SS sama dengan SSS adalah benar"); }Output Konsol:
SS! = SSS
SS sama dengan SSS
Menunjukkan bahwa alamat memori SS dan SS di tumpukan berbeda, tetapi isinya dalam tumpukannya sama.
String ss = string baru ("ABC");
String ssss = ss;
// menilai apakah alamat referensi SS dan SSSS di tumpukan sama jika (ss == ssss) {system.out.println ("ss == ssss"); } else {System.out.println ("ss! = ssss"); } // menilai apakah isi SS dan SSSS di tumpukan adalah sama jika (ss.equals (ssss)) {system.out.println ("ss sama dengan ssss"); } else {System.out.println ("SS tidak sama dengan SSSS"); }Output Konsol:
SS == SSSS
SS sama dengan SSSS
Ini menunjukkan bahwa SS dan SSS adalah objek yang sama dan bahwa mereka memiliki konten yang sama di heap
2. Perbandingan objek referensi
Testbean obj1 = testbean baru (); Testbean obj2 = testbean baru (); Testbean obj3 = obj1; if (obj1 == obj2) {system.out.println ("obj1 == obj2"); } else {System.out.println ("Obj1! = Obj2"); } if (obj1 == obj3) {System.out.println ("obj1 == obj3"); } else {System.out.println ("Obj1! = Obj3"); }Output Konsol:
Obj1! = Obj2
OBJ1 == OBJ3
Itu berarti bahwa obj1 dan obj2 bukan objek yang sama, dan alamat referensi dalam tumpukan berbeda
OBJ1 dan OBJ3 adalah objek yang sama, dan alamat referensi dalam tumpukan adalah sama
2. Perbedaan antara = dan sama ==
= mewakili penugasan, yaitu, tetapkan nilai di sebelah kanan = ke variabel di sebelah kiri. sama dan == adalah operasinya
Terima kasih telah membaca, saya harap ini dapat membantu Anda. Terima kasih atas dukungan Anda untuk situs ini!