Eine gute Antwort wäre:

Es gibt zwei Objekte, jedes mit einer eindeutigen Referenz. Es gibt zwei Referenzvariablen, jede enthält eine andere Referenz.

Gleichheit des Inhalts von Referenzvariablen

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 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 erste Objekt
    String strB;  // Referenz auf das zweite Objekt
    strA   = new String( "Der Gingham Hund" );   // Das erste Objekt erzeugen und
                                                 // seine Referenz speichern.

    System.out.println( strA );                // Der Referenz auf das erste
                                                 // Objekt folgen und Daten ausgeben.

    strB   = new String( "Die Calico Katze" );   // Das zweite Objekt erzeugen und
                                                 // seine Referenz speichern.

    System.out.println( strB );

    if ( strA == strB )
      System.out.println( "Dies wird nicht ausgegeben.");

Da die Referenz in strA anders ist als die Referenz in strB, ist

strA == strB

false. (Betrachten Sie die Abbildung der vorherigen Seite.) Die dritte Ausgabeanweisung wird nicht ausgeführt.

FRAGE 13:

Betrachtet der == -Operator den Inhalt der Objekte, wenn die if-Anweisung ausgeführt wird?

Inhaltsverzeichnis