Viele Werte, ein Name
Eine Wetterstation misst eine Woche lang jeden Mittag die Temperatur. Sieben Variablen t0 bis t6 wären umständlich — und für 365 Tage unbrauchbar.
- Reihung:feste Anzahl gleichartiger Werte unter einem gemeinsamen Namen (englisch array).
- Element:ein einzelner Platz der Reihung; alle Elemente haben denselben Datentyp.
- Index:Platznummer eines Elements — sie beginnt bei 0.
- Länge:Anzahl der Elemente; der letzte Index ist Länge − 1.
- Statisch:die Länge wird beim Erzeugen festgelegt und ändert sich danach nicht mehr.
- Zugriff:
temp[3]ist das Element mit Index 3, hier der Wert 21 — also der vierte Tag. - Lesen:
int t = temp[3];kopiert den Wert in eine Variable. - Schreiben:
temp[3] = 20;überschreibt genau dieses eine Element. - Struktogramm:sprachunabhängig ebenfalls mit eckigen Klammern:
temp[i], Index ab 0.
Reihungen anlegen und benutzen
In Java entsteht eine Reihung in zwei Schritten: Der Name wird mit dem Typ vereinbart, new reserviert die Plätze.
int[] temp = new int[7]; // 7 Plätze, alle mit 0 belegt
temp[0] = 14; // Element 0 schreiben
int anzahl = temp.length; // 7 — ohne Klammern
double[] preise = {1.49, 0.99, 2.25}; // erzeugen und belegen in einem Schritt
- Standardwert:nach
newsteht in jedem Platz0(int),0.0(double),false(boolean) odernull(String). - Typprüfung:in eine
int-Reihung passt kein2.5und kein Text — der Compiler lehnt die Zuweisung ab. - Grenzen:ein Index unter 0 oder ab der Länge führt beim Ausführen zum Abbruch mit
ArrayIndexOutOfBoundsException.
Baue eine Reihung aus Typ und Länge. Wähle dann einen Index (auch einen Platz anklicken) und einen Wert und führe die Zuweisung aus. Probiere auch Index −1, einen Index gleich der Länge und einen Wert vom falschen Typ.
Halte fest: Eine Reihung der Länge n hat genau die Indizes 0 bis n − 1, und jedes Element hat den beim Anlegen gewählten Typ.
Typ[] name = new Typ[n]; · Zugriff name[i] mit \(0 \le i \le n-1\) · Länge name.length
Allgemeine Hinweise
Der letzte Index ist Länge − 1
Bei int[] a = new int[10]; gibt es a[10] nicht. Der häufigste Laufzeitfehler mit Reihungen ist genau dieser Zugriff einen Platz zu weit.
Länge nie fest eintippen
Schreibe a.length statt einer Zahl. Ändert sich später die Länge beim Erzeugen, bleibt der übrige Code richtig.
Zuweisung kopiert keine Reihung
Nach int[] b = a; zeigen beide Namen auf dieselbe Reihung. b[0] = 5; ändert also auch a[0].
