Java Programming

Java String Vergleich: Ein umfassender Leitfaden

Spread the love

Java bietet verschiedene Möglichkeiten zum Vergleichen von Strings, jede mit eigenen Stärken und Schwächen. Die beste Methode hängt davon ab, ob ein Groß-/Kleinschreibung-sensitiver Vergleich benötigt wird, ob auf Gleichheit geprüft wird oder die lexikografische Ordnung bestimmt werden soll. Diese Anleitung klärt die gängigsten Ansätze.

Inhaltsverzeichnis

  1. Verwendung der compareTo()-Methode
  2. Der ==-Operator
  3. Die equals()-Methode
  4. Groß-/Kleinschreibung und equalsIgnoreCase()
  5. Die contentEquals()-Methode

1. Vergleichen von Strings mit compareTo()

Die compareTo()-Methode bietet einen lexikografischen Vergleich. Sie gibt zurück:

  • 0: Wenn die Strings gleich sind.
  • Einen negativen Wert: Wenn der aufrufende String dem Argument-String lexikografisch vorangeht.
  • Einen positiven Wert: Wenn der aufrufende String dem Argument-String lexikografisch folgt.

Dieser Vergleich ist Groß-/Kleinschreibung-sensitiv; Großbuchstaben gehen Kleinbuchstaben voraus.


String str1 = "apple";
String str2 = "banana";
String str3 = "Apple";

int result1 = str1.compareTo(str2); // result1 wird negativ sein
int result2 = str1.compareTo(str3); // result2 wird negativ sein (Groß-/Kleinschreibung-sensitiv)
int result3 = str1.compareTo("apple"); // result3 wird 0 sein

2. Der ==-Operator

Der ==-Operator vergleicht Referenzen, nicht den String-Inhalt. Er prüft, ob zwei String-Variablen auf dieselbe Speicheradresse verweisen. Dies ist in der Regel nicht das gewünschte Verhalten beim Vergleichen von String-Werten.


String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");

System.out.println(str1 == str2); // Oft true aufgrund von String-Interning
System.out.println(str1 == str3); // false (verschiedene Objekte)

Während str1 == str2 aufgrund von Java’s String-Interning oft true zurückgibt, ist das Verlassen darauf unzuverlässig. Verwenden Sie immer equals() für den Inhaltsvergleich.

3. Die equals()-Methode

Die equals()-Methode ist der empfohlene Ansatz zum Vergleichen von String-Inhalten. Sie vergleicht Zeichen, ohne die Speicherorte zu berücksichtigen.


String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");

System.out.println(str1.equals(str2)); // true
System.out.println(str1.equals(str3)); // true

4. Groß-/Kleinschreibung und equalsIgnoreCase()

equals() ist Groß-/Kleinschreibung-sensitiv. „hello“ und „Hello“ werden als unterschiedlich betrachtet. Für Groß-/Kleinschreibung-insensitive Vergleiche verwenden Sie equalsIgnoreCase().


String str1 = "hello";
String str2 = "Hello";

System.out.println(str1.equals(str2)); // false
System.out.println(str1.equalsIgnoreCase(str2)); // true

5. Die contentEquals()-Methode

contentEquals() ähnelt equals(), erlaubt aber den Vergleich eines Strings mit anderen CharSequence-Objekten (wie StringBuffer oder StringBuilder).


String str1 = "hello";
StringBuffer str2 = new StringBuffer("hello");

System.out.println(str1.contentEquals(str2)); // true

Dies bietet Flexibilität, aber für einfache String-zu-String-Vergleiche wird equals() aus Gründen der Lesbarkeit bevorzugt.

Zusammenfassend lässt sich sagen: Wählen Sie die geeignete Methode je nach Bedarf aus: compareTo() für die lexikografische Ordnung, equals() für die Groß-/Kleinschreibung-sensitive Inhaltsgleichheit, equalsIgnoreCase() für die Groß-/Kleinschreibung-insensitive Gleichheit und contentEquals() zum Vergleichen von Strings mit anderen CharSequence-Objekten. Vermeiden Sie die Verwendung von == zum Vergleichen von String-Inhalten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert