Wenn es Ihnen wie mir geht: Als ich anfing, Java zu benutzen, wollte ich den Operator "==" verwenden, um zu testen, ob zwei String-Instanzen gleich sind, aber das ist in Java wohl oder übel nicht der richtige Weg.
In diesem Tutorial zeige ich verschiedene Möglichkeiten, Java-Strings korrekt zu vergleichen, beginnend mit dem Ansatz, den ich am häufigsten verwende. Am Ende dieses Java-String-Vergleichstutorials werde ich auch erörtern, warum der Operator "==" beim Vergleich von Java-Strings nicht funktioniert.
Option 1: Java String-Vergleich mit der equals-Methode Die meiste Zeit (vielleicht 95 % der Zeit) vergleiche ich Strings mit der Methode equals der Java String-Klasse, etwa so:
if (string1.equals(string2))
Diese String equals-Methode betrachtet die beiden Java-Strings, und wenn sie genau die gleiche Zeichenfolge enthalten, werden sie als gleich angesehen.
Betrachtet man ein kurzes Beispiel für einen String-Vergleich mit der equals-Methode, so würde der folgende Test die beiden Strings nicht als gleich einstufen, da die Zeichen nicht exakt gleich sind (die Groß- und Kleinschreibung der Zeichen ist unterschiedlich):
String string1 = "foo";
String string2 = "FOO";
if (string1.equals(string2))
{
// this line will not print because the
// java string equals method returns false:
System.out.println("The two strings are the same.")
}
Wenn die beiden Zeichenketten jedoch genau dieselbe Zeichenfolge enthalten, gibt die equals-Methode true zurück, wie in diesem Beispiel:
String string1 = "foo";
String string2 = "foo";
// test for equality with the java string equals method
if (string1.equals(string2))
{
// this line WILL print
System.out.println("The two strings are the same.")
}
Option 2: String-Vergleich mit der Methode equalsIgnoreCase
Bei einigen Vergleichstests für Zeichenketten wird nicht berücksichtigt, ob die Zeichenketten groß oder klein geschrieben sind. Wenn Sie Ihre Zeichenketten auf diese Weise auf Gleichheit prüfen möchten, verwenden Sie die equalsIgnoreCase-Methode der String-Klasse, etwa so:
String string1 = "foo";
String string2 = "FOO";
// java string compare while ignoring case
if (string1.equalsIgnoreCase(string2))
{
// this line WILL print
System.out.println("Ignoring case, the two strings are the same.")
}
Option 3: Java String-Vergleich mit der compareTo-Methode
Es gibt noch eine dritte, weniger verbreitete Möglichkeit, Java-Strings zu vergleichen, und zwar mit der Methode compareTo der Klasse String. Wenn die beiden Strings genau gleich sind, gibt die compareTo-Methode den Wert 0 (Null) zurück. Hier ein kurzes Beispiel dafür, wie dieser String-Vergleich aussieht:
String string1 = "foo bar";
String string2 = "foo bar";
// java string compare example
if (string1.compareTo(string2) == 0)
{
// this line WILL print
System.out.println("The two strings are the same.")
}
Während ich über das Konzept der Gleichheit in Java schreibe, ist es wichtig zu wissen, dass die Sprache Java eine Gleichheitsmethode in der Basisklasse Java Object enthält. Wenn Sie Ihre eigenen Objekte erstellen und feststellen wollen, ob zwei Instanzen Ihres Objekts "gleich" sind, sollten Sie diese equals-Methode in Ihrer Klasse außer Kraft setzen (und implementieren) (so wie die Java-Sprache dieses Gleichheits-/Vergleichsverhalten in der String equals-Methode bereitstellt).
Das sollten Sie sich ansehen \==, .equals(), compareTo(), und compare()