Wie würde sich das Programm ändern, wenn die zweite Anweisung folgendermaßen geändert werden würde:
String str2 = "String Literal" ; // kleiner Unterschied
Jetzt, da das zweite Literal nicht identisch mit dem ersten ist,
werden zwei literale Stringobjekte erzeugt und
die Variablen str1 und str2 verweisen auf verschiedene
Objekte.
Der == -Operator bestimmt, ob zwei Namen 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 zwei Strings:
String strA = new String ("Der Gingham Hund");
String strB = strA;
strA == strBstrA.
equals( strB )
Für Strings ist es immer wahr, dass wenn
== wahr ergibt, dann wird es auch equals() sein.
Aber das ist nicht unbedingt wahr für andere Objekttypen. Zum Beispiel können Sie Ihre eigenen Objekte definieren und Ihr eigenes Verhalten
für deren equals() Methode definieren.