1. Strings vergelijken

Dit is allemaal goed en wel. Maar je kunt zien dat de strings s1en s2eigenlijk hetzelfde zijn, wat betekent dat ze dezelfde tekst bevatten. Hoe vertel je het programma bij het vergelijken van strings om niet naar de adressen van Stringobjecten te kijken, maar naar hun inhoud?

Om ons hierbij te helpen, Stringheeft de klasse van Java de equalsmethode. Bellen ziet er zo uit:

string1.equals(string2)
Twee snaren vergelijken

Deze methode retourneert trueof de strings hetzelfde zijn, en falseals ze niet hetzelfde zijn.

Voorbeeld:

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

Meer voorbeelden:

Code Uitleg
"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
Taak
Java Syntax,  niveau 4les 6
Vergrendeld
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
Taak
Java Syntax,  niveau 4les 6
Vergrendeld
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. Vergelijking van tekenreeksen die niet hoofdlettergevoelig zijn

In het laatste voorbeeld zag je dat de vergelijking . De snaren zijn inderdaad niet gelijk. Maar..."Hello".equals("HELLO")false

Het is duidelijk dat de snaren niet gelijk zijn. Dat gezegd hebbende, hun inhoud heeft dezelfde letters en verschilt alleen per letter. Is er een manier om ze te vergelijken en het geval van de letters buiten beschouwing te laten? Dat wil zeggen, dus dat levert ?"Hello".equals("HELLO")true

En het antwoord op deze vraag is ja. In Java Stringheeft het type nog een speciale methode: equalsIgnoreCase. Bellen ziet er zo uit:

string1.equalsIgnoreCase(string2)

De naam van de methode vertaalt zich ruwweg als vergelijk maar negeer hoofdlettergebruik . De letters in de naam van de methode bevatten twee verticale lijnen: de eerste is een kleine letter Len de tweede is een hoofdletter i. Laat je daardoor niet verwarren.

Voorbeeld:

Code Opmerking
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
Taak
Java Syntax,  niveau 4les 6
Vergrendeld
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. Voorbeeld van stringvergelijking

Laten we een eenvoudig voorbeeld geven: stel dat u twee regels met het toetsenbord moet invoeren en moet bepalen of ze hetzelfde zijn. Dit is hoe de code eruit zal zien:

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. Een interessante nuance van snaarvergelijking

Er is één belangrijke nuance waarvan u op de hoogte moet zijn.

Als de Java-compiler meerdere identieke strings in uw code aantreft (met name in uw code), dan zal het slechts een enkel object voor hen maken om geheugen te besparen.

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

En dit is wat het geheugen als resultaat zal bevatten:

string vergelijking

En als je text == messagehier vergelijkt, dan krijg je true. Wees daar dus niet verbaasd over.

Als je om wat voor reden dan ook echt wilt dat de referenties anders zijn, dan kun je dit schrijven:

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

Of dit:

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

In beide gevallen verwijzen de variabelen texten messagenaar verschillende objecten die dezelfde tekst bevatten.


4
Taak
Java Syntax,  niveau 4les 6
Vergrendeld
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.