1. A karakterláncok összehasonlítása

Ez mind jó és jó. De láthatja, hogy a s1és s2karakterláncok valójában ugyanazok, vagyis ugyanazt a szöveget tartalmazzák. A karakterláncok összehasonlításakor hogyan mondod meg a programnak, hogy ne az Stringobjektumok címét, hanem a tartalmát nézze?

Ebben segít nekünk a Java Stringosztályának a equalsmódszere. A hívás így néz ki:

string1.equals(string2)
Két karakterlánc összehasonlítása

Ez a metódus akkor tér vissza true, ha a karakterláncok megegyeznek, és falseha nem azonosak.

Példa:

Kód jegyzet
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

További példák:

Kód Magyarázat
"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
Feladat
Java Syntax,  szintlecke
Zárt
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
Feladat
Java Syntax,  szintlecke
Zárt
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. Kis- és nagybetűk közötti karakterlánc-összehasonlítás

Az utolsó példában azt látta, hogy az összehasonlítás eredménye . Valójában a húrok nem egyenlőek. De..."Hello".equals("HELLO")false

Nyilvánvaló, hogy a húrok nem egyenlőek. Ennek ellenére a tartalmuk ugyanazokat a betűket tartalmazza, és csak a betűk kis- és nagybetűi szerint tér el. Van-e mód összehasonlítani őket, és figyelmen kívül hagyni a betűk nagybetűjét? Vagyis így hoz ?"Hello".equals("HELLO")true

És a válasz erre a kérdésre igen. Java nyelven a Stringtípusnak van egy másik speciális metódusa is: equalsIgnoreCase. A hívás így néz ki:

string1.equalsIgnoreCase(string2)

A metódus neve nagyjából azt jelenti, hogy összehasonlítjuk, de figyelmen kívül hagyjuk a kis- és nagybetűket . A metódus nevében szereplő betűk két függőleges vonalat tartalmaznak: az első egy kisbetű L, a második pedig egy nagybetű i. Ne hagyd, hogy ez összezavarjon.

Példa:

Kód jegyzet
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
Feladat
Java Syntax,  szintlecke
Zárt
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. Példa karakterlánc-összehasonlításra

Mondjunk csak egy egyszerű példát: tegyük fel, hogy be kell írnia két sort a billentyűzetről, és meg kell határoznia, hogy ugyanazok-e. Így fog kinézni a kód:

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. Érdekes árnyalat a húr-összehasonlításhoz

Van egy fontos árnyalat, amellyel tisztában kell lennie.

Ha a Java fordító több azonos karakterláncot talál a kódban (konkrétan a kódban), akkor a memória megtakarítása érdekében csak egyetlen objektumot hoz létre számukra.

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

És íme, mit fog tartalmazni a memória ennek eredményeként:

húr összehasonlítás

És ha itt összehasonlítod text == message, akkor megkapod true. Szóval ezen ne csodálkozz.

Ha valamilyen oknál fogva nagyon szüksége van arra, hogy a hivatkozások eltérőek legyenek, akkor ezt írhatja:

String text = "This is a very important message";
String message = new String ("This is a very important message");

Vagy ez:

String text = "This is a very important message";
String message = new String (text);

Mindkét esetben a textés messageváltozók különböző objektumokra mutatnak, amelyek ugyanazt a szöveget tartalmazzák.


4
Feladat
Java Syntax,  szintlecke
Zárt
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.