Zwei Strings in Java miteinander vergleichen

Problem:

Man versucht zwei Strings in der Form

if(stringEins == stringZwei) {
    System.out.println(„stringEins und stringZwei sind gleich.“);
}

zu vergleichen und erhält alles andere als ein richtiges Ergebnis.

Der Grund ist der, daß mit dem „==“-Operator nur die beiden Referenzen miteinander verglichen werden, nicht jedoch die Objekte. Man erhält deshalb womöglich auch bei zwei gleichen Strings das Ergebnis, daß sie verschieden sind. Für den inhaltlichen Vergleich, nicht nur von Strings, sondern allgemein von Objekten, wird in Java die Methode equals(Object obj) verwendet, die nicht immer nur Referenzen, sondern je nach Klasse auch die Inhalte (sprich ihre Daten) vergleicht. Obige Abfrage müßte also

if(stringEins.equals(stringZwei)) {
    System.out.println(„stringEins und stringZwei sind gleich.“);
}

lauten, damit das gemacht wird, was eigentlich gewünscht ist.

Im Zusammenhang mit Strings ist noch eine Besonderheit zu erwähnen:

if („Mein statischer String“.equals(stringZwei)) {
    System.out.println(„stringZwei ist gleich zu Java.“);
}

ist zulässig, der Compiler erzeugt aus der Zeichenkette automatisch ein String-Objekt; man muß also nicht zuerst ein Objekt anlegen und den String Java dort speichern.

Quelle: http://de.geocities.com/uweplonus/faq/string.html

3 Gedanken zu „Zwei Strings in Java miteinander vergleichen“

  1. Oft ist es an dieser Stelle noch praktisch, die beiden Strings erst noch zu trimmen. Hierdurch werden dann auch Leerzeichen, die der Benutzer evtl. aus versehen eingegeben hat, entfernt.
    stringEins = stringEins.trim();

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.