1. Strings vergleichen

Das ist alles schön und gut. Aber Sie können sehen, dass die Zeichenfolgen s1und s2tatsächlich identisch sind, was bedeutet, dass sie denselben Text enthalten. Wie weisen Sie das Programm beim Vergleich von Zeichenfolgen an, nicht auf die Adressen von StringObjekten, sondern auf deren Inhalt zu achten?

Um uns dabei zu helfen, Stringverfügt die Java-Klasse über die equalsMethode. Der Aufruf sieht so aus:

string1.equals(string2)
Vergleich zweier Strings

Diese Methode gibt zurück true, wenn die Zeichenfolgen gleich sind und falsewenn sie nicht gleich sind.

Beispiel:

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

Mehr Beispiele:

Code Erläuterung
"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
Aufgabe
Java Syntax,  Level 4Lektion 6
Gesperrt
Mindestens zwei Zahlen
Alle Such- und Sortieralgorithmen basieren auf Vergleichen. Schon bald wirst du bestens damit umgehen können, wenn du möchtest. Doch bis es so weit ist, sollten wir mit etwas Kleinerem anfangen: Schreibe ein Programm, um die kleinere von zwei Zahlen zu finden. Finde sie und zeige sie dann an. Wenn die Zahlen gleich sind, zeige eine der beiden an.
4
Aufgabe
Java Syntax,  Level 4Lektion 6
Gesperrt
Die größte von vier Zahlen
Das Finden der größten Zahl ist eine n-äre Operation (eine Operation mit n Zahlen), die die größte von mehreren Zahlen zurückgibt. Egal. Solche Definitionen brauchen wir im geheimen CodeGym-Zentrum nicht. Wir sind hier, um zu lernen, wie man Code schreibt. In dieser Aufgabe musst du über die Tastatur vier Zahlen eingeben. Ermittle dann die größte von ihnen und zeige sie auf dem Bildschirm an.

2. String-Vergleich ohne Berücksichtigung der Groß-/Kleinschreibung

Im letzten Beispiel haben Sie gesehen, dass der Vergleich ergibt . Tatsächlich sind die Saiten nicht gleich. Aber..."Hello".equals("HELLO")false

Offensichtlich sind die Saiten nicht gleich. Ihr Inhalt besteht jedoch aus den gleichen Buchstaben und unterscheidet sich nur durch die Groß-/Kleinschreibung der Buchstaben. Gibt es eine Möglichkeit, sie zu vergleichen und die Groß-/Kleinschreibung der Buchstaben außer Acht zu lassen? Das heißt, das ergibt ?"Hello".equals("HELLO")true

Und die Antwort auf diese Frage lautet ja. In Java verfügt der StringTyp über eine weitere spezielle Methode: equalsIgnoreCase. Der Aufruf sieht so aus:

string1.equalsIgnoreCase(string2)

Der Name der Methode lässt sich in etwa mit „vergleichen, aber Groß-/Kleinschreibung ignorieren“ übersetzen . Die Buchstaben im Namen der Methode umfassen zwei vertikale Linien: Der erste ist ein Kleinbuchstabe Lund der zweite ein Großbuchstabe i. Lassen Sie sich davon nicht verwirren.

Beispiel:

Code Notiz
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
Aufgabe
Java Syntax,  Level 4Lektion 6
Gesperrt
Drei Zahlen sortieren
Der Planet Linear Chaos ist von Isomorphen bevölkert. Es wird angenommen, dass sie die Sortieralgorithmen erfunden haben. Alles in ihren Köpfen ist außerordentlich gut geordnet. Sie stellen nur Planetenvisa für Personen aus, die mindestens 7 Sortieralgorithmen kennen. Unternehmen wir den ersten Schritt in Richtung Linear Chaos: Lies drei Zahlen von der Tastatur, sortiere sie in absteigender Reihenfolge und zeige sie dann auf dem Bildschirm an.

3. Beispiel für einen String-Vergleich

Lassen Sie uns nur ein einfaches Beispiel geben: Angenommen, Sie müssen zwei Zeilen über die Tastatur eingeben und feststellen, ob sie identisch sind. So sieht der Code aus:

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. Eine interessante Nuance des Saitenvergleichs

Es gibt eine wichtige Nuance, die Sie beachten müssen.

Wenn der Java-Compiler in Ihrem Code (insbesondere in Ihrem Code) mehrere identische Zeichenfolgen findet, erstellt er nur ein einziges Objekt für diese, um Speicherplatz zu sparen.

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

Und hier ist, was der Speicher als Ergebnis enthalten wird:

String-Vergleich

Und wenn man hier vergleicht text == message, dann erhält man true. Seien Sie also nicht überrascht.

Wenn Sie aus irgendeinem Grund wirklich unterschiedliche Referenzen benötigen, können Sie Folgendes schreiben:

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

Oder dieses:

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

In beiden Fällen verweisen die Variablen textund messageauf verschiedene Objekte, die denselben Text enthalten.


4
Aufgabe
Java Syntax,  Level 4Lektion 6
Gesperrt
Jen oder Jen?
Jen, die Administratorin von Firma X, lernte, wie man ein Raumschiff steuert und flog zu einem anderen Planeten. Die Mitarbeiter in Firma X sind gut und aufrichtig. Das Problem ist nur, dass sie etwas schusselig sind und Namen häufig durcheinander bringen. Also beschlossen sie, dass die neue Administratorin auch Jen heißen würde. Lass uns der Firma X helfen, ihre Jen zu finden: Schreibe ein Programm, das die Identität von zwei eingegebenen Namen überprüft.