Strings mit == vergleichen: warum klappt das Beispiel manchmal?

Lernfragen und Praxis · 3 Antworten

STARTBEITRAG

#1
java
String a = "test";
String b = new String("test");

Ich will an diesem Minimalbeispiel den Unterschied zwischen a == b und a.equals(b) erklären. Bei zwei Literalen wäre == nämlich zufällig ein schlechtes Lehrbeispiel. Wie formuliert ihr das knapp?

0

Antworten

3
Antwort auf das Thema
#2

== vergleicht hier die Referenzen, equals den Inhalt. String-Literale können auf dasselbe internierte Objekt zeigen. Daraus folgt aber keine allgemeine Inhaltsprüfung mit ==.

0
Antwort auf Antwort

Antwort auf #2 von tom_dev

== vergleicht hier die Referenzen, equals den Inhalt. String-Literale können auf dasselbe internierte Objekt zeigen. Daraus folgt aber keine allgemeine Inhaltsprüfung mit ==.
#3

Also als Merksatz: Bei Referenztypen fragt == nach demselben Objekt. Was equals vergleicht, bestimmt dessen Implementierung. Bei String ist es der Zeicheninhalt.

0
Also als Merksatz: Bei Referenztypen fragt == nach demselben Objekt. Was equals vergleicht, bestimmt dessen Implementierung. Bei String ist es der Zeicheninhalt.
#4

So würde ich es nehmen. Und bei einem möglicherweise nullen a nicht blind a.equals aufrufen. Objects.equals(a, b) behandelt diesen Fall mit.

0