1. Membandingkan rentetan
Ini semua baik dan baik. Tetapi anda boleh melihat bahawa rentetan s1dan s2sebenarnya adalah sama, bermakna ia mengandungi teks yang sama. Apabila membandingkan rentetan, bagaimana anda memberitahu program untuk melihat bukan pada alamat Stringobjek, tetapi pada kandungannya?
Untuk membantu kami dengan ini, kelas Java Stringmempunyai equalskaedah. Memanggilnya kelihatan seperti ini:
string1.equals(string2)
Kaedah ini kembali truejika rentetan adalah sama, dan falsejika 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, Stringjenis 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 == messagedi 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 textdan messagemenghala ke objek berbeza yang mengandungi teks yang sama.
GO TO FULL VERSION