Arrays verstehen: Index, Länge und Zugriff
Ein Array fasst mehrere Werte desselben Typs unter einem Namen zusammen. Du greifst mit einem Index auf ein bestimmtes Element zu. In Java hat ein Array eine feste Länge; bei einem Array der Länge n sind nur die Indizes von 0 bis n - 1 gültig.
Hake ab, was du schon kannst — und komm am Ende hierher zurück!
Warum ein Array statt vieler Variablen?
Stell dir ein Spiel mit hundert möglichen Inventarplätzen vor. Hundert Variablen wie gegenstand1, gegenstand2 und so weiter wären schwer zu verwalten. Ein Array bündelt die Werte. Eine Schleife kann dann nacheinander auf alle Plätze zugreifen.
Array
Ein Array ist eine Datenstruktur mit nummerierten Elementen eines gemeinsamen Elementtyps. In Java wird seine Länge beim Erzeugen festgelegt und bleibt für dieses Arrayobjekt unverändert.
Das Bild einer Schubladenreihe hilft: Der Arrayname bezeichnet die ganze Reihe, der Index eine bestimmte Schublade und der gespeicherte Wert ihren Inhalt. Anders als ein Name wie ersteSchublade kann ein Index auch berechnet werden.
Das Java-Array int[] punkte = {12, 18, 15, 20}; speichert vier Ganzzahlen. punkte[0] liefert 12, punkte[2] liefert 15. Ändert das Programm punkte[2] = 17, bleibt die Länge vier; nur der Wert im dritten Element ändert sich.
Welche Indizes sind gültig?
In Java beginnt der Index immer bei 0. Deshalb hat ein Array der Länge vier die gültigen Indizes 0, 1, 2 und 3. Der letzte gültige Index ist also array.length - 1.
Für einen sicheren Java-Zugriff muss gelten: Der Index i ist mindestens 0 und kleiner als array.length.
Die Länge zählt Elemente, der Index zählt ihre Position ab null. Genau hier entsteht häufig ein Off-by-one-Fehler: Wer array.length als letzten Index benutzt, liegt um eins außerhalb des Arrays.
Für String[] farben = {"Rot", "Grün", "Blau"}; ist farben.length gleich 3.
farben[0]ist"Rot".farben[2]ist"Blau".farben[3]ist ungültig, denn erlaubt sind nur0,1und2.
Java löst beim Zugriff auf farben[3] eine ArrayIndexOutOfBoundsException aus.
Wie legst du ein Java-Array an und veränderst es?
Bei int[] zahlen = new int[4]; bezeichnet int den Elementtyp, zahlen die Arrayvariable und 4 die Länge. Java füllt neue int-Elemente zunächst mit 0. Anschließend kannst du einzelne Werte zuweisen.
java int[] zahlen = new int[4]; zahlen[0] = 65; zahlen[1] = 5; zahlen[2] = 78; zahlen[3] = 22;
Wenn die Werte schon feststehen, geht es kürzer: int[] zahlen = {65, 5, 78, 22};. Auch danach darfst du etwa mit zahlen[1] = 9 ein Element ändern. Fest ist die Länge, nicht der Inhalt.
Eine Arrayvariable ist in Java eine Referenz auf ein Arrayobjekt. Soll eine andere Länge verwendet werden, muss ein neues Array erzeugt werden. Die Variable kann anschließend auf dieses neue Array zeigen; das ursprüngliche Array selbst wurde dadurch nicht vergrößert.
Wähle in jeder Lücke die passende Form und prüfe anschließend deine Antworten.
Ein Java-Array speichert Elemente eines Typs. Bei Länge 5 lautet der letzte gültige Index ``. Eine Zuweisung an ein gültiges Element verändert den , aber nicht die Länge.
Wie durchläufst und durchsuchst du ein Array?
Eine Indexschleife ist sicher, wenn ihre Laufbedingung genau die Arraygrenze beachtet. Das typische Muster lautet:
java for (int i = 0; i != zahlen.length; i++) { System.out.println(zahlen[i]); }
Die Schleife startet mit dem ersten gültigen Index 0. Weil i in jedem Schritt genau um eins steigt, läuft sie nur, solange i noch nicht zahlen.length erreicht hat. Dann endet sie vor dem ungültigen Zugriff.
Gesucht wird der Wert 78 im Array {65, 5, 78, 22}.
- Bei Index
0steht65: noch kein Treffer. - Bei Index
1steht5: noch kein Treffer. - Bei Index
2steht78: gefunden.
Eine Suche kann an dieser Stelle abbrechen oder Index 2 als Fundposition zurückgeben. Wenn kein Element passt, endet die Schleife nach dem letzten gültigen Index.
Was bedeutet ein Array von Arrays?
Ein Java-Array kann als Elemente wiederum Arrays enthalten. So entsteht zum Beispiel ein zweidimensionales Array. Der erste Index wählt ein inneres Array, der zweite ein Element darin.
java int[][] raster = { {3, 4, 5}, {8, 9} };
Hier liefert raster[0][1] den Wert 4: raster[0] wählt das erste innere Array, [1] darin das zweite Element. raster[1][1] liefert 9.
Prüfe bei geschachtelten Java-Arrays jede Ebene getrennt: zuerst raster.length, danach raster[i].length. Innere Arrays dürfen unterschiedlich lang sein.
Deshalb ist ein zweidimensionales Java-Array nicht automatisch eine rechteckige Matrix. Erst wenn alle inneren Arrays gleich lang sind, ergibt sich eine rechteckige Anordnung.
Wo gelten andere Regeln?
Die genaue Schreibweise und manche Eigenschaften hängen von der Programmiersprache und der verwendeten Datenstruktur ab.
- Java-Arrays beginnen bei Index
0und haben nach der Erzeugung eine feste Länge. - Manche Sprachen erlauben andere Indexgrenzen. In Pascal kann ein Array beispielsweise mit einer ausdrücklich gewählten Unter- und Obergrenze deklariert werden.
- Scratch-Listen zählen in der beschriebenen Umgebung ab
1und können durch Anhängen wachsen. Eine solche Liste darf deshalb nicht ungeprüft wie ein Java-Array behandelt werden.
Array und Liste
Ein Array hat in Java eine feste Länge und indexierte Elemente eines festgelegten Typs. Eine Liste ist eine andere Datenstruktur, die je nach Sprache oder Bibliothek wachsen und schrumpfen kann. Ähnliche Darstellung bedeutet nicht identisches Verhalten.
Karteikasten
Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.
Alles auf einen Blick
- Array
- Aufbau: gemeinsamer Elementtyp und feste Länge in Java
- Zugriff: Index beginnt in Java bei 0
- Grenze: letzter Index ist length - 1
- Verarbeitung: Schleife und Suche
- Verschachtelung: Array von Arrays
- Abgrenzung: dynamische Liste kann andere Regeln haben
Mit Google fortfahren