1. Strings vergleichen
Das ist alles schön und gut. Aber Sie können sehen, dass die Zeichenfolgen s1
und s2
tatsä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 String
Objekten, sondern auf deren Inhalt zu achten?
Um uns dabei zu helfen, String
verfügt die Java-Klasse über die equals
Methode. Der Aufruf sieht so aus:
string1.equals(string2)
Diese Methode gibt zurück true
, wenn die Zeichenfolgen gleich sind und false
wenn sie nicht gleich sind.
Beispiel:
Code | Notiz |
---|---|
|
|
Mehr Beispiele:
Code | Erläuterung |
---|---|
|
false |
|
true |
|
true |
|
true |
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 String
Typ ü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 L
und der zweite ein Großbuchstabe i
. Lassen Sie sich davon nicht verwirren.
Beispiel:
Code | Notiz |
---|---|
|
|
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:
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 text
und message
auf verschiedene Objekte, die denselben Text enthalten.
GO TO FULL VERSION