1. Membandingkan string

Ini semua baik dan bagus. Tetapi Anda dapat melihat bahwa string s1dan s2sebenarnya sama, artinya mengandung teks yang sama. Saat membandingkan string, bagaimana Anda memberi tahu program untuk tidak melihat alamat Stringobjek, tetapi pada kontennya?

Untuk membantu kami dalam hal ini, kelas Java Stringmemiliki equalsmetodenya. Memanggilnya terlihat seperti ini:

string1.equals(string2)
Membandingkan dua string

Metode ini mengembalikan truejika stringnya sama, dan falsejika tidak sama.

Contoh:

Kode Catatan
String s1 = "Hello";
String s2 = "HELLO";
String s3 = s1.toUpperCase();

System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println(s2.equals(s3));
// Hello
// HELLO
// HELLO

false // They are different
false // They are different
true // They are the same, even though the addresses are different

Lebih banyak contoh:

Kode Penjelasan
"Hello".equals("HELLO")
false
String s = "Hello";
"Hello".equals(s);
true
String s = "Hel";
"Hello".equals(s + "lo");
true
String s = "H";
(s + "ello").equals(s + "ello");
true


2. Perbandingan string yang case-insensitive

Pada contoh terakhir, Anda melihat bahwa perbandingan menghasilkan . Memang, senarnya tidak sama. Tetapi..."Hello".equals("HELLO")false

Jelas, senarnya tidak sama. Konon, isinya memiliki huruf yang sama dan hanya berbeda pada hurufnya. Apakah ada cara untuk membandingkannya dan mengabaikan hurufnya? Artinya, sehingga menghasilkan ?"Hello".equals("HELLO")true

Dan jawaban untuk pertanyaan ini adalah ya. Di Jawa, Stringtipe tersebut memiliki metode khusus lainnya: equalsIgnoreCase. Memanggilnya terlihat seperti ini:

string1.equalsIgnoreCase(string2)

Nama metode diterjemahkan secara kasar sebagai perbandingan tetapi abaikan case . Huruf-huruf dalam nama metode mencakup dua garis vertikal: yang pertama adalah huruf kecil L, dan yang kedua adalah huruf besar i. Jangan biarkan hal itu membingungkan Anda.

Contoh:

Kode Catatan
String s1 = "Hello";
String s2 = "HELLO";
String s3 = s1.toUpperCase();

System.out.println(s1.equalsIgnoreCase(s2));
System.out.println(s1.equalsIgnoreCase(s3));
System.out.println(s2.equalsIgnoreCase(s3));  
// Hello
// HELLO
// HELLO

true
true
true


3. Contoh perbandingan string

Mari kita berikan satu contoh sederhana saja: misalkan Anda perlu memasukkan dua baris dari keyboard dan menentukan apakah keduanya sama. Seperti inilah tampilan kodenya:

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 string yang menarik

Ada satu nuansa penting yang perlu Anda waspadai.

Jika kompiler Java menemukan banyak string identik dalam kode Anda (khususnya dalam kode Anda), maka itu hanya akan membuat satu objek untuk mereka untuk menghemat memori.

String text = "This is a very important message";
String message = "This is a very important message";

Dan inilah yang akan berisi memori sebagai hasilnya:

perbandingan tali

Dan jika Anda membandingkan text == messagedi sini, maka Anda mendapatkan true. Jadi jangan kaget dengan itu.

Jika karena alasan tertentu Anda sangat membutuhkan referensi agar berbeda, maka Anda dapat 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 kasus ini, variabel textdan messagemenunjuk ke objek berbeda yang berisi teks yang sama.