Thema des siebten Kapitels waren Arrays. Sie sind nichts anderes als Listen mit einer Reihe Variablen eines bestimmten Datentyps. Im Beispiel der Variable als Eimer kann man Arrays als ein Lagerregal für diese Sehen.
Arrays werden wiefolgt deklariert:
Datentyp name[] = new Datentyp [anzahl];
Als Datentyp lassen sich sowohl triviale als auch Komplexe Datentypen einsetzen. Hinter dem Namen des Arrays trägt man so viele eckige Klammern ein, wie man Dimensionen des Arrays wünscht.
Ein zweidimensionales Array
Datentyp name[x][y];
kann man sich als Array mit x “Fächern” vorstelle. Jedes dieser Fächer enthält nun ein eigenes Arrays des angegebenen Datentyps mit y “Fächern”. So lassen sich Arrays beliebig verschachteln.
Arrays sind nützlich um eine Menge Variablen zu organisieren. Großer Vorteil: Ich kann mithilfe von
array[x];
den x-ten Eintrag im Array array abfragen. Im Bundeswettbewerb Informatik habe ich zum Beispiel ein Array des Datentyps int mit der Länge 10 benutzt, um 10 Fächer einer Verpackungsmaschine darzustellen. Um nun den Füllstand des n-ten Fachs abzufragen, musste ich nicht 10 if()-Sentences schreiben, sondern konnte die obenstehende Abfrage nutzen.
Ein entscheidender Nachteil eines Arrays ist, dass man es nicht nachträglich erweitern kann. Für so etwas benutzt man bester List oder Arraylist, diese sind aber blöderweise komplexe Datentypen. Auch kann man ein Array nicht so einfach kopieren: das naheliegendste, nämlich
array = kopieVonArray;
erzeugt nicht wie erwartet eine Kopie, sondern speichert lediglich einen Verweis zu array ab. Ändere ich nun also einen Wert in kopieVonArray, so wird dieser auch in array verändert. Um nun also ein Array wirklich zu kopieren, benutzt man am besten die Methode
System.arraycopy( src, 0, dest, 0, src.length );
So werden alle Werte des Arrays kopiert, es werden keine Verweise o.ä. erstellt.