Java: String Compare – die besten drei Optionen

Es gibt drei praktische Möglichkeiten, um Strings miteinander zu vergleichen. Neben der Option Java equals() stehen Ihnen der Operator == und die Methode Java compareTo() für Strings zur Verfügung.

Wie kann man Strings in Java vergleichen?

Während man primitive Datentypen in Java ganz einfach mit dem passenden Java Operator == vergleichen kann, ist das im Fall von Java Strings ein wenig komplizierter. Zwar können Sie auch in diesem Fall den Operator einsetzen, er wird dann allerdings nicht den Inhalt der beiden Strings miteinander abgleichen, sondern lediglich die Referenz auf das jeweilige Objekt. Das mag in einigen Fällen ausreichend oder gewollt sein, in anderen Fällen wird allerdings eine andere Methode benötigt, die das gewünschte Ergebnis liefert. Glücklicherweise bietet die Programmiersprache mehrere Möglichkeiten. Besonders geläufig und praktisch sind diese drei:

  • Java equals()
  • Java compareTo() für Strings
  • Java Operator ==

Günstige Webhosting-Pakete von IONOS!

Vertrauen Sie auf flexibel skalierbares und zuverlässiges Webhosting inklusive persönlichem Berater mit IONOS!

Kostenlose Domain
SSL Zertifikat
DDoS-Schutz

Die Methode Java equals()

Am einfachsten und praktischsten, wenn Sie den Inhalt zweier Strings miteinander vergleichen möchten, ist die Methode equals() in Java. Sie stellt tatsächlich die beiden Werte gegenüber. Stimmen diese exakt überein, liefert die Methode „true“ als Bestätigung. Unterscheiden sie sich in irgendeinem Punkt, lautet die Ausgabe „false“. Dies ist die Syntax der Methode:

public boolean equals(Objekt weiteresObjekt)
java

Die Funktionsweise dieser Methode lässt sich am besten anhand eines einfachen Beispiels veranschaulichen. Dafür erstellen wir drei Strings und vergleichen den ersten dieser Strings mit den beiden anderen. So sieht das in der Praxis aus:

public class Main {
	public static void main(String[] args) {
	String string1 = "Dies ist ein String";
	String string2 = "Dies ist ein String";
	String string3 = "Dies ist ein ganz anderer String";
	System.out.println(string1.equals(string2));
	System.out.println(string1.equals(string3));
	}
}
java

Wenn wir diesen Code nun mit dem Java-Befehl System.out.println ausgeben, erhalten wir dies:

true
false
java

string1 und string2 sind identisch, string3 unterscheidet sich jedoch von den anderen beiden. Während das in diesem Beispiel noch mit bloßem Auge zu erkennen ist, gibt es andere Strings, die sich auf den ersten Blick vielleicht ähneln, aber durch ein kleines Detail voneinander abweichen. Java equals() ist eine sehr gute Methode, um hierbei Fehler zu vermeiden.

Java compareTo() für Strings

Die zweite Methode ist ein wenig komplizierter, funktioniert aber ebenfalls verlässlich. Java compareTo() vergleicht Strings lexikographisch nach dem Unicode-Wert der einzelnen Zeichen in einem String. Dabei werden die einzelnen Zeichen gegenübergestellt und abgeglichen. Entspricht ein String dem anderen, gibt die Methode 0 als Antwort aus. Ist der erste String kürzer als der zweite, wird ein negativer Wert ausgegeben. Ist er hingegen länger, ist die Ausgabe ein positiver Wert. Dies ist die Syntax der Methode:

public int compareTo(String andererString)
java

Die Funktionsweise erläutern wir Ihnen anhand eines einfachen Beispiels. Dabei erstellen wir wieder drei Strings und vergleichen den ersten mit den beiden anderen. Dies ist der Code:

public class Main {
	public static void main(String[] args) {
	String string1 = "Dies ist ein String";
	String string2 = "Dies ist ein String";
	String string3 = "Dies ist ein ganz anderer String";
	System.out.println(string1.compareTo(string2));
	System.out.println(string1.compareTo(string3));
	}
}
java

Wenn wir diesen Code nun mit System.out.println ausgeben, erhalten wir dies:

0
-20
java

Möchten Sie Java compareTo() für Strings anwenden, aber dabei Groß- und Kleinschreibung ignorieren, nutzen Sie die angepasste Methode compareToIgnoreCase(). Diese funktioniert so:

public class Main { public static void main(String[] args) { String string1 = “Dies ist ein String”; String string2 = “Dies ist ein String”; String string3 = “DIES IST EIN STRING”; System.out.println(string1.compareToIgnoreCase(string2)); System.out.println(string1.compareToIgnoreCase(string3)); } }

Die Ausgabe ändert sich entsprechend:

0
0
java

Der Java Operator ==

Wie erwähnt können Sie grundsätzlich auch den Operator == verwenden, um zwei Strings miteinander zu vergleichen. Er wird die Referenzen vergleichen und nicht die eigentlichen Werte. Das können wir abschließend in einem weiteren Beispiel veranschaulichen:

public class Main { public static void main(String[] args) { String string1 = “Dies ist ein String”; String string2 = “Dies ist ein String”; String string3 = new String (“Dies ist ein String”); System.out.println(string1string2); System.out.println(string1string3); } }

Da string1 und string2 sich auf dieselbe Instanz beziehen, lautet die Ausgabe „true“. string3 bezieht sich hingegen auf eine andere Instanz. Somit lautet die Ausgabe „false“, obwohl der Wert bzw. der Text innerhalb der Strings identisch ist.

true
false
java