Wirtschaftsinformatik (Bachelor-Studiengang): Programmierung (2. Semester)
Sie sind hier: Startseite › Wirtschaftsinformatik › Programmierung Java (Kurs 2): Referenzdatentypen
HB / CM, Kurs vom 01.10.2002 - 31.03.2003
- Unterschied zu den primitiven Datentypen?
- Wie kann Referenz-Variable mit Wert versehen werden?
- Konstruktoren
- Was passiert im Laufe eines Programms auf dem Heap?
Referenzdatentypen
3 Arten:
- Arrays
- Klassen
- Interfaces (später)
Unterschied zu den primitiven Datentypen?
Bei den primitiven Datentypen:
Beispiel: int x = 10;
(Variablen)
Bildbeschreibung "Bei den primitiven Datentypen": Kein Verweis auf den Heap.
Dasselbe gilt für Parameter von Methoden.
Bei Referenzdatentypen:
Beispiel: Demo x = newDemo();
(Variable; Demo = Klasse)
Bildbeschreibung "Bei Referenzdatentypen": Querverweis ("Reference") auf den Heap.
Heap = jedemenge Speicherplatz; Bereich des Stack-Segments ist begrenzt, relativ überschaubar gering.
Dasselbe gilt für Referenz-Parameter.
new
:
- Erzeugt Speicherplatz auf Heap
- Führt den programmierten Konstruktor aus (hier
Demo()
) - Speichert die Adresse im Stack-Segmentbereich
Wie kann Referenz-Variable mit Wert versehen werden?
- mithilfe von
new
(schon aus letztem Semester bekannt) - durch Initialisierung mit null
Beispiel: Demo x = null;
Null ist eine spezielle Adresse, die genau zu diesem Zweck vom System reserviert wird.
Demo x = null;
...
x = newDemo();
Objekt wird hier also erst ein paar Zeilen später erzeugt.
Programmierregel: Referenz-Variablen immer initialisieren!
Null ist zuweisungskompatibel zu allen Refenzdatentypen.
Konstruktoren
kein eigener Konstruktor:
default
-Konstruktor- Kennzeichen: keine Parameter
mindestens ein eigener Konstruktor:
- kein
default
-Konstruktor - dafür: die eigenen
- beliebig viele möglich ("überladen")
Programmierregel: Konstruktoren werden
großgeschrieben!
Konstruktoren haben nie einen Rückgabewert!
Konstruktoren können nicht vererbt werden (im Gegensatz zu
Methoden)!
Was passiert im Laufe eines Programms auf dem Heap?
Stichwort: Automatisches "Tafelputzen".
Garbage-Kollektor
(Müllsammler), achtet darauf, dass auf dem
Heap noch Platz ist.
Stellt er fest, dass dies nicht mehr der Fall ist, dann sieht er
alle Referenzvariablen im Programm nach, ob diese auf Speicherplatz
verweisen und wann bzw. ob
dieser Speicherplatz noch gebraucht
wird. Nicht benötigter Speicherplatz wird wieder freigegeben.
(Merkbar am Laufzeitverhalten des Programms.)
Erkennungsalgorithmen zum Erkennen von nicht mehr benötigten Objekten.
Beispiel: ... Demo x = null;