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?
== vergleicht hier die Referenzen, equals den Inhalt. String-Literale können auf dasselbe internierte Objekt zeigen. Daraus folgt aber keine allgemeine Inhaltsprüfung mit ==.
== vergleicht hier die Referenzen, equals den Inhalt. String-Literale können auf dasselbe internierte Objekt zeigen. Daraus folgt aber keine allgemeine Inhaltsprüfung mit ==.
Also als Merksatz: Bei Referenztypen fragt == nach demselben Objekt. Was equals vergleicht, bestimmt dessen Implementierung. Bei String ist es der Zeicheninhalt.
Also als Merksatz: Bei Referenztypen fragt == nach demselben Objekt. Was equals vergleicht, bestimmt dessen Implementierung. Bei String ist es der Zeicheninhalt.