1. Membandingkan rentetan
Ini semua baik dan baik. Tetapi anda boleh melihat bahawa rentetan s1
dan s2
sebenarnya adalah sama, bermakna ia mengandungi teks yang sama. Apabila membandingkan rentetan, bagaimana anda memberitahu program untuk melihat bukan pada alamat String
objek, tetapi pada kandungannya?
Untuk membantu kami dengan ini, kelas Java String
mempunyai equals
kaedah. Memanggilnya kelihatan seperti ini:
string1.equals(string2)
Kaedah ini kembali true
jika rentetan adalah sama, dan false
jika ia tidak sama.
Contoh:
Kod | Catatan |
---|---|
|
|
Lebih banyak contoh:
Kod | Penjelasan |
---|---|
|
false |
|
true |
|
true |
|
true |
2. Perbandingan rentetan tidak sensitif huruf besar-besaran
Dalam contoh terakhir, anda melihat bahawa perbandingan menghasilkan . Sesungguhnya, rentetan itu tidak sama. Tetapi..."Hello".equals("HELLO")
false
Jelas sekali, rentetannya tidak sama. Yang berkata, kandungan mereka mempunyai huruf yang sama dan hanya berbeza mengikut kes huruf. Adakah terdapat cara untuk membandingkannya dan mengabaikan kes surat? Iaitu, supaya menghasilkan ?"Hello".equals("HELLO")
true
Dan jawapan kepada soalan ini adalah ya. Di Jawa, String
jenis ini mempunyai kaedah khas lain: equalsIgnoreCase
. Memanggilnya kelihatan seperti ini:
string1.equalsIgnoreCase(string2)
Nama kaedah diterjemahkan secara kasar sebagai bandingkan tetapi abaikan kes . Huruf dalam nama kaedah termasuk dua baris menegak: yang pertama ialah huruf kecil L
, dan yang kedua ialah huruf besar i
. Jangan biarkan itu mengelirukan anda.
Contoh:
Kod | Catatan |
---|---|
|
|
3. Contoh perbandingan rentetan
Mari berikan hanya satu contoh mudah: katakan anda perlu memasukkan dua baris dari papan kekunci dan tentukan sama ada ia sama. Inilah rupa kod tersebut:
Scanner console = new Scanner(System.in);
String a = console.nextLine();
String b = console.nextLine();
String result = a.equals(b) ? "Same" : "Different";
System.out.println(result);
4. Nuansa perbandingan rentetan yang menarik
Terdapat satu nuansa penting yang perlu anda ketahui.
Jika pengkompil Java menemui berbilang rentetan yang sama dalam kod anda (khususnya dalam kod anda), maka ia akan mencipta hanya satu objek untuk mereka untuk menjimatkan memori.
String text = "This is a very important message";
String message = "This is a very important message";
Dan inilah yang akan terkandung dalam memori sebagai hasilnya:
Dan jika anda membandingkan text == message
di sini, maka anda mendapat true
. Jadi jangan terkejut dengan itu.
Jika atas sebab tertentu anda benar-benar memerlukan rujukan yang berbeza, maka anda boleh menulis ini:
String text = "This is a very important message";
String message = new String ("This is a very important message");
Atau ini:
String text = "This is a very important message";
String message = new String (text);
Dalam kedua-dua kes ini, pembolehubah text
dan message
menghala ke objek berbeza yang mengandungi teks yang sama.
GO TO FULL VERSION