Zwei Strings in Java miteinander vergleichen3

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

Post teilen


Delicious Digg Google+

3 Comments

  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();

  2. Was muss ich tun um mehrere Strings miteinander zu vergleichen?

Kommentar abgeben

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

Microsoft Certified Professional Logo
 

Werbung