00 Stimmen

Java: Wie vergleiche ich Strings richtig?

Frage von Gast | 07.07.2016 um 11:22

Ich programmiere noch nicht sehr lange in Java und bekomme immer wieder Probleme mit einem simplen String-Vergleich.

Aus anderen Programmiersprachen bin ich es gewohnt Strings einfach mit == zu vergleichen. Das Ergebnis ist true wenn die Strings gleich sind, ansonsten false.

In Java habe ich aber schon häufiger ein merkwürdiges Verhalten mit diesem Vergleich beobachten können. Manchmal funktioniert es, manchmal nicht. Muss man da noch etwas beachten? Wie vergleiche ich Java-Strings richtig?

AntwortenPositivNegativ
0Beste Antwort0 Stimmen

Ja, du musst etwas beachten. Und zwar den Unterschied zwischen einem Vergleich mit == und einem Vergleich mit .equals().

  • Mit == testest du auf eine gleiche Referenz, also zum Beispiel ob zwei Variablen auf dasselbe Objekt zeigen.
  • Mit .equals() testest du auf den gleichen Wert, also ob beide Strings den gleichen Inhalt haben, unabhängig davon, ob auch das Objekt gleich ist oder nicht.

Wenn du in deinem Fall nur an einem Vergleich des Inhalts eines Strings interessiert bist, müsstest du also .equals() verwenden.

Deine Beobachtung, dass es manchmal funktioniert und manchmal nicht wird daran liegen, dass du tatsächlich auch manchmal Strings verglichen hast, die die gleiche Referenz haben. War der String zwar gleich, die Referenz aber nicht, kannst du entsprechend false auf deinen == Vergleich zurück.

Hier ist ein kleines Beispiel:

String a = new String("abc");
String b = new String("abc");
String c = a;

if (a == b) {
  // FALSE weil Referenz nicht gleich ist  
}

if (a == c) {
  // TRUE weil Referenz gleich ist  
}

if (a.equals(b)) {
  // TRUE weil Inhalt gleich ist
}

Mit .equals() testest du übrigens immer auch auf eine gleiche Groß- und Kleinschreibung. Benutze .equalsIgnoreCase() wenn die Schreibweise nicht beachtet werden soll.
07.07.2016 um 14:25

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

PHP: Zeit und Performance messen

Tutorial | 0 Kommentare

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.