1. String == dan equal()
Dalam penilaian kesetaraan string, == menilai apakah alamatnya sama, dan equal() menilai apakah nilai karakternya sama. Seringkali hasil == dan equal() sama. Ini karena objek String berada dalam mode yang tidak dapat diubah. Jika Anda tidak secara eksplisit membuat objek String baru, default Java untuk menyimpan objek String adalah dengan memasukkan objek String yang baru dibuat ke dalam buffer, dan kemudian menentukan buffernya setiap kali objek ini sudah ada, jika iya, maka objek String dengan nilai karakter yang sama yang dibuat nantinya juga akan menunjuk ke alamat dimana objek nilai karakter tersebut awalnya dibuat. Artinya, jika nilai karakternya sama, dalam banyak kasus geologinya juga sama. == memiliki efek yang sama dengan equal(). Namun, ketika objek dihasilkan oleh str = new String("abc") alih-alih ditetapkan secara langsung sebagai str = "abc", atau setelah beberapa pemrosesan koneksi string, atau dihasilkan melalui objek seperti StringBuffer, objek baru akan dibuka di memori. Untuk alamat, hasil == dan equal() berbeda saat ini.
Apakah ini sedikit rumit? Di sini Anda memerlukan pemahaman tentang memori, tumpukan, dan penyimpanan objek. Saya tidak ingin berlarut-larut dalam masalah ini. Jika Anda tidak mengerti, ingatlah bahwa jika Anda ingin menentukan apakah nilai karakter dari dua string sama dan tidak ada persyaratan lain, silakan gunakan equal() daripada == ==, Saya pikir ketika Anda membutuhkannya, Anda akan memahaminya secara alami. Faktanya, untuk penilaian string, kita jarang perlu menggunakan ==.
2. Tentang str.equal("abc") dan "abc".equal(str)
Tampaknya banyak perdebatan mengenai hal ini. Menulis konstanta pertama di akhir mungkin sejalan dengan kebiasaan kebanyakan orang dan pemikiran logis kita. Namun diperlukan satu penilaian lagi untuk menentukan apakah str bernilai nol. Jika tidak, pengecualian mungkin terjadi di sini. Cara penulisan yang terakhir tidak memerlukan penilaian lebih lanjut apakah itu nol. Sejauh menyangkut preferensi pribadi saya, saya lebih suka cara penulisan yang terakhir.
3. Tentang null String
/**
* Uji situasi ketika String Java adalah null
* tanggal pembuatan: 3-6-2009
* penulis: Administrator
*
*/
public static void testNull(){
String a= nol,b = nol,c=”hehe”;
Sistem.keluar.println(a == null);
Sistem.keluar.println(a+b+c);
}
Hasil eksekusi metode:
BENAR
nullnull haha Jadi semua orang harus memperhatikan saat melakukan operasi penggabungan string, jangan lupa untuk mencentang null, jika tidak, hasilnya tidak akan terlalu memuaskan!