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?