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
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();
Guter Tipp!
Was muss ich tun um mehrere Strings miteinander zu vergleichen?