55 Stimmen

Java: Unterschied zwischen == und .equals()

Frage von Gast | 03.07.2016 um 04:52

In Java scheint man einen String auf zwei verschiedene Arten vergleichen zu können. Einmal mit == und einmal mit .equals().

Beide Möglichkeiten ergeben bei mir in einem Test das gleiche Ergebnis (TRUE falls der String identisch ist, FALSE falls nicht).

Wieso gibt es also zwei Methoden dafür? Oder gibt es tatsächlich einen Unterschied und Situationen wo man die eine Möglichkeit der anderen vorziehen sollte?

AntwortenPositivNegativ
7Beste Antwort7 Stimmen

Ein Vergleich mit == und mit .equals() führt nur dann zu dem selben Ergebnis, wenn nicht nur der Inhalt sondern auch die Referenz der beiden verglichenen Objekte identisch ist.

  • Ein Vergleich mit == testet ob die Referenz identisch ist.
  • Ein Vergleich mit .equals() testet ob der Inhalt identisch ist (auch wenn die Referenz verschieden ist).

Wenn du zum Beispiel zwei String-Variablen hast, die zwar denselben Inhalt haben, aber verschiedene Referenzen, ergibt ein Vergleich mit == trotzdem false:

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

if (a == b) {}      // FALSE
if (a.equals(b)) {} // TRUE
if (b.equals(a)) {} // TRUE

if (a == c) {}      // TRUE
if (a.equals(c)) {} // TRUE
if (c.equals(a)) {} // TRUE

Die Variablen a und b sind unabhängige Objekte und haben daher auch unterschiedliche Referenzen, obwohl deren Inhalt identisch ist. Daher führt der Vergleich a == b zu FALSE.

Wollen wir den Inhalt vergleichen, benutzen wir .equals(). Dies ergibt TRUE, da beide Strings den Wert "abc" haben.

Der String c zeigt auf dieselbe Referenz wie String a, daher ergibt sowohl ein Vergleich mit == als auch mit .equals() TRUE.
Letztes Update am 27.09.2020 | Erstellt am 05.07.2016

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

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.