zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

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

Antwort:

Nein. Er betrachtet nur den Inhalt der beiden Referenzvariablen. Beide enthalten verschiedene Referenzen, also ergibt die Auswertung des == -Operators false.

Zwei Referenzvariablen, die auf EIN Objekt zeigen.

Hier ist ein weiteres Beispielprogramm:

class StringBsp5
{
  public static void main ( String[] args )
  {
    String strA; // Referenz auf das Objekt
    String strB; // weitere Referenz auf das Objekt

    strA   = new String("Der Gingham Hund");
    // Das einzige Objekt erzeugen
    // Seine Referenz in strA speichern

    System.out.println(strA);

    strB = strA; // Referenz nach strB kopieren

    System.out.println(strB);

    if ( strA == strB )
      System.out.println(
      "Gleiche Info in den Referenzvariablen");
   }
}

Zur Laufzeit des Programms wird nur ein Objekt erzeugt (durch new). Die eindeutige Referenz auf das Objekt wird in strA gestellt. Der Zuweisungsoperator in der Anweisung

    strB = strA; // Kopiere die Referenz nach strB

kopiert die Information, die in strA ist nach strB. Sie macht keine Kopie des Objekts!

Oder, um fast das gleiche zu sagen: das Kopieren einer Objektreferenz, macht keine Kopie des Objekts!

Da dieselbe Information in strA wie in strB gespeichert ist, führt jede der Variablen zu demselben Objekt.

Das ist in etwa so, als wenn wir unsere Telefonnummer mehreren Leuten geben: Jede Kopie unserer Telefonnummer ist eine Referenz auf uns, aber uns gibt es nur einmal. Das Programm wird ausgeben:

Der Gingham Hund
Der Gingham Hund
Gleiche Info in den Referenzvariablen

FRAGE 15:

Wie viele Objekte gibt es in diesem Programm? Wie viele Referenzvariablen gibt es?

zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite