Vorlesung Informatik 2 - Teil A: Java Kurs

3.2 Arrays von Referenzdatentypen

Arrays können auch von Referenz-Datentypen gebildet werden. 

JButton[] k = new JButton[40];

Diese Anweisung erzeugt genau ein Objekt, nämlich das Array. Im Array stehen 40 Referenzen, die alle mit null vorbelegt sind. Das Array belegt also 40*4 Byte Speicher, unabhängig davon, wie groß der Speicherbedarf eine JButton Objekts ist.

Um 40 JButton Objekte mit der Aufschrift "1", "2", ...  zu erzeugen, schreiben wir folgende Schleife:

for(int i=0;i<k.length;i++) k[i] = new JButton(""+(i+1));

Hier können wir nicht die verkürzte for-Schleife verwenden, weil wir den Inhalt des Arrays ändern wollen.

Um die JButton Objekte selbst zu manipulieren, reicht die einfache for-Schleife:

for(JButton b:k)  b.addActionListener(this);

Das Array selbst ist auch ein Objekt, wir können es z.B austauschen:

k = new JButton[100];

Jetzt haben wir ein neues, mit lauter null Werten belegtes Array erzeugt. 

Das Array der Länge 40 ist dereferenziert, d.h. für unser Programm nicht mehr erreichbar. Das gleiche gilt für die 40 JButton Objekte, sie liegen nutzlos im Speicher, bis der Garbage Collector sie entfernt.

Im letzten Semester haben wir in unserem Billard-Spiel Objekte in einer LinkedList verwaltet. Diese hat den Vorteil, dass sie dynamisch wachsen kann. Arrays haben eine feste Länge, sind aber erheblich effizienter als verkettete Listen. 

Wenn man nur wenige Objekte in einem Array speichern, kann man schreiben:

Color[] ampelFarbe = {Color.RED, Color.YELLOW, Color.GREEN};

oder

String[] spielFarbe = {"Karo","Herz","Pik","Kreuz"};

 

Lehrvideo  (YouTube)