Wie würde sich das Programm ändern, wenn die zweite Anweisung folgendermaßen geändert werden würde:
String str2 = "StringLiteral" ; // kleiner Unterschied
Jetzt, da das zweite Literal nicht mit dem Ersten identisch ist,
werden zwei literale Stringobjekte erzeugt, und
die Variablen str1
und str2
verweisen auf verschiedene
Objekte.
==
sind, sind immer equal()
Der ==
-Operator bestimmt, ob zwei Variablennamen auf dasselbe Objekt verweisen.
Es ist in der realen Welt (und in Programmen) üblich für ein Objekt mehrere Namen zu haben, zum Beispiel "Mark Twain" und "Samuel Clemens" sind zwei Namen für denselben Autor.
Betrachten Sie das Folgende:
String strA = new String ("Der Gingham Hund"); String strB = strA;
strA == strB
strA.equals( strB )
Für Strings ist es immer wahr, dass wenn
==
wahr ergibt, dann wird equals()
auch wahr ergeben.
Aber für andere Objekttypen muss das nicht unbedingt wahr sein.
Zum Beispiel können Sie Ihre eigenen Objekte definieren und Ihr eigenes Verhalten
für deren equals()
Methode definieren.