Genaue Betrachtung: Objektreferenzen und Objekte
Schauen wir uns ein Beispielprogramm an:
Führe das Programm in Einzelschritten aus („Step over“: ) und sieh Dir parallel dazu die folgende Erklärung an:
Objektreferenzen (auch Zeiger genannt) sind nicht die Objekte selbst, sondern Variablen, die auf Objekte zeigen können.
Genauer: Die Objekte liegen im Arbeitsspeicher des Rechners. Zeigt eine Objektreferenz auf ein Objekt, dann bedeutet das, dass sie die Anfangsadresse des Speicherbereiches enthält, in dem das Objekt gespeichert ist.
Zeigt eine Objektreferenz auf kein Objekt, so enthält sie den Wert null
.
Verschiedene Objektvariablen können auch auf das selbe Objekt zeigen:
Die Anweisung k = r
in Zeile 4 bewirkt, dass der Wert von r
(also die Adresse des Rechteck-Objekts) in die Variable k
hineinkopiert wird. Nach dieser Anweisung sieht die Situation also so aus:
- Die Objektreferenzen
r
undk
zeigen am Ende des Programms auf das selbe Rectangle-Objekt. Insbesondere gibt es nur ein Rectangle-Objekt!
Die Anweisungr.rotate(30)
bewirkt also exakt dasselbe wiek.rotate(30)
.
- Die Anweisungen
Rectangle r;
undr = new Rectangle(50, 50, 400, 300);
kann man zu einer Anweisung zusammenfassen und kurz schreiben:
Rectangle r = new Rectangle(50, 50, 400, 300);
.
Primitive Datentypen
Variablen mit primitiven Datentypen (d.h. int, float, double, char, boolean
) speichern keine Referenzen auf Werte, sondern direkt die Werte selbst. Bei Ihnen bewirkt der Zuweisungsoperator also ein Kopieren des Wertes. Im folgenden Programm speichern die zwei Variablen am Ende zwei unterschiedliche Zahlenwerte: