Es gibt zwei Objekte, jedes mit einer eindeutigen Referenz. Es gibt zwei Referenzvariablen, jede enthält eine andere Referenz.
Der == -Operator sieht nach dem Inhalt
der beiden Referenzvariablen. Wenn der Inhalt beider Referenzvariablen der gleiche ist,
dann ist das Ergebnis true.
Andernfalls ist das Ergebnis false.
Da jedes Objekt eine eindeutige Referenz hat, stellt der Operator fest, ob zwei Referenzvariablen auf ein und dasselbe Objekt verweisen.
Der == -Operator sieht NICHT nach Objekten. Er betrachtet nur Referenzen (Information darüber, wo ein Objekt aufzufinden ist.)
Hier ist ein Teil des vorherigen Programms mit einer zusätzlichen if-Anweisung:
String strA; // Referenz auf das 1. Objekt
String strB; // Referenz auf das 2. Objekt
strA = new String(
"Der Gingham Hund"); // 1. Objekt erzeugen und
// Referenz speichern.
System.out.println(
strA); // Referenz des 1. Objekts
// folgen und Daten ausgeben.
strB = new String(
"Die Calico Katze"); // 2. Objekt erzeugen und
// Referenz speichern.
System.out.println(
strB); // Referenz des 2. Objekts
// folgen und Daten ausgeben.
System.out.println( strB );
if ( strA == strB )
System.out.println(
"Das wird nicht ausgegeben.");
Da die Referenz in strA anders ist als die Referenz in strB, ist
strA == strB
false. (Betrachtet die Abbildung der vorherigen Seite.)
Die dritte Ausgabeanweisung wird nicht ausgeführt.
Betrachtet der == -Operator den Inhalt der Objekte, wenn die if-Anweisung ausgeführt wird?