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)
Membandingkan dua rentetan

Kaedah ini kembali truejika rentetan adalah sama, dan falsejika ia tidak sama.

Contoh:

Kod 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:

Kod 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

4
Tugasan
Java Syntax,  tahappelajaran
Terkunci
Minimum of two numbers
All search and sort algorithms are based on comparisons. You'll be able to handle these very soon, if you so desire. In the meantime, we suggest starting with something small: write a program to find the minimum of two numbers. Find it and then display it. And if the numbers are the same, display either of them.
4
Tugasan
Java Syntax,  tahappelajaran
Terkunci
Maximum of four numbers
Finding the maximum is an n-ary operation (an operation on n numbers) that returns the largest of several numbers. Never mind. We have no need for such definitions at the secret CodeGym center. We're here to learn how to write code. In this task, you need to use the keyboard to enter four numbers. Then determine the largest of them and display it on the screen.

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
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

8
Tugasan
Java Syntax,  tahappelajaran
Terkunci
Sorting three numbers
Planet Linear Chaos is populated by isomorphs. They are believed to have invented sorting algorithms. Everything in their heads is extremely well-ordered. They only issue planetary visas to people who know at least 7 sorting algorithms. Let's take our first step toward Linear Chaos: Read three numbers from the keyboard, put them in descending order, and then display them on the screen.

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:

perbandingan rentetan

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.


4
Tugasan
Java Syntax,  tahappelajaran
Terkunci
Jen or Jen?
Jen, Company X's admin, learned how to pilot a space ship and flew away to another planet. People in Company X are good and sincere. It's just that they're scatterbrained and they mix up names. So they decided that the new administrator would also be called Jen. Let's help Company X find their Jen: write a program that checks the identity of two entered names.