Wenn Sie wie ich sind, als ich anfing, Java zu verwenden, wollte ich den Operator "==" verwenden, um zu testen, ob zwei String-Instanzen gleich sind, aber zum Guten oder Schlechten ist dies in Java nicht der richtige Weg.
In diesem Tutorial werde ich verschiedene Möglichkeiten zum korrekten Vergleichen von Java-Zeichenfolgen demonstrieren, beginnend mit dem Ansatz, den ich die meiste Zeit verwende. Am Ende dieses Lernprogramms zum Vergleichen von Java-Zeichenfolgen werde ich auch erläutern, warum der Operator "==" beim Vergleichen von Java-Zeichenfolgen nicht funktioniert.
Option 1: Java-String-Vergleich mit der Equals-Methode
Die meiste Zeit (möglicherweise 95% der Zeit) vergleiche ich Strings mit der Equals-Methode der Java-String-Klasse wie folgt:
if (string1.equals(string2))
Diese String equals-Methode untersucht die beiden Java-Zeichenfolgen. Wenn sie genau dieselbe Zeichenfolge enthalten, werden sie als gleich angesehen.
Wenn Sie sich ein kurzes Beispiel für einen Zeichenfolgenvergleich mit der Methode equals ansehen, werden die beiden Zeichenfolgen bei Ausführung des folgenden Tests nicht als gleich angesehen, da die Zeichen nicht exakt gleich sind (der Fall 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 Zeichenfolgen 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: Zeichenfolgenvergleich mit der equalsIgnoreCase-Methode
In einigen Zeichenfolgenvergleichstests sollten Sie ignorieren, ob die Zeichenfolgen in Groß- oder Kleinbuchstaben geschrieben sind. Wenn Sie Ihre Zeichenfolgen auf diese Weise ohne Berücksichtigung der Groß- und Kleinschreibung auf Gleichheit testen möchten, verwenden Sie die equalsIgnoreCase-Methode der String-Klasse wie folgt:
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 auch eine dritte, weniger verbreitete Methode zum Vergleichen von Java-Zeichenfolgen, und zwar mit der Methode compareTo der String-Klasse. Wenn die beiden Zeichenfolgen genau gleich sind, gibt die compareTo-Methode den Wert 0 (Null) zurück. Hier ist ein kurzes Beispiel dafür, wie dieser String-Vergleichsansatz 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 dieses Konzept der Gleichheit in Java schreibe, ist es wichtig zu beachten, dass die Java-Sprache eine Methode equals in der Basisklasse Java Object enthält. Wenn Sie Ihre eigenen Objekte erstellen und ein Mittel bereitstellen möchten, um festzustellen, ob zwei Instanzen Ihres Objekts "gleich" sind, sollten Sie diese Methode equals in Ihrer Klasse überschreiben (und implementieren) (auf die gleiche Weise, wie es die Java-Sprache bietet Dieses Gleichheits- / Vergleichsverhalten in der String-Gleichheitsmethode).
Vielleicht möchten Sie sich dies ansehen ==, .equals (), compareTo () und compare ()