MINT lernen

Arrays und ArrayList

Acht Tagestemperaturen in acht Variablen? Ein Array hält sie alle in einer Reihe — und eine ArrayList wächst sogar mit.

1

Arrays mit fester Länge

  • Anlegen:int[] temp = new int[8]; — acht Felder vom Typ int, alle mit 0 gefüllt.
  • Mit Werten:int[] temp = {12, 15, 9, 7, 11, 14, 18, 16}; — die Länge ergibt sich aus der Anzahl.
  • Index:zählt ab 0: temp[0] ist das erste Feld, temp[7] das letzte.
  • Länge:temp.length (ohne Klammern) — sie steht beim Anlegen fest und ändert sich nie.
  • Zu weit:temp[8] übersetzt fehlerfrei, stürzt aber beim Ausführen mit ArrayIndexOutOfBoundsException ab.
  • Durchlauf:for (int i = 0; i < temp.length; i++) — i ist der Index, temp[i] der Wert.

Wähle im Balken einen Schleifenkopf. Markiere alle Felder, auf die temp[i] zugreift — per Klick oder mit den Pfeiltasten und Enter. Dann „Prüfen“. „Ablauf zeigen“ spielt die Schleife Schritt für Schritt ab.

Welche Felder besucht die Schleife?

Konsole

0 von 5 Schleifen richtig markiert

Halte fest: Die Indizes eines Arrays mit 8 Feldern laufen von 0 bis 7 = temp.length - 1. Der sichere Schleifenkopf nutzt i < temp.length; mit <= greift die Schleife auf ein Feld zu, das es nicht gibt.

2

Die ArrayList wächst mit

  • Import:import java.util.ArrayList; ganz oben in der Datei.
  • Anlegen:ArrayList<String> einkauf = new ArrayList<>(); — zu Beginn leer, der Typ steht in spitzen Klammern.
  • Methoden:add("Eier") hängt an, get(i) liest, set(i, "Käse") ersetzt, remove(i) löscht, size() zählt.
  • Zahlen:in spitzen Klammern nur Klassen: ArrayList<Integer> statt int, Double statt double.
  • for-each:for (String s : einkauf) — „für jedes s in einkauf“, ohne Index.

Herleitung:

einkauf = []
| Typ angeben
Start: eine leere Python-Liste.
ArrayList<String> einkauf = new ArrayList<>();
| anhängen
Java will wissen, was hineinkommt: hier nur Zeichenketten.
einkauf.add("Milch"); statt einkauf.append("Milch")
| lesen, zählen
Aus append wird add; so kommen auch „Brot“ und „Eier“ hinzu.
einkauf.get(0) und einkauf.size()
Ergebnis
Statt einkauf[0] und len(einkauf) — liefert „Milch“ und 3.
Merke

Array oder ArrayList: Array — feste Länge, temp[i], temp.length. ArrayList — wächst mit, get(i), size(). Beide zählen ab Index 0.

3

Allgemeine Hinweise

length, length() oder size()?

Array: temp.length ohne Klammern. String: wort.length(). ArrayList: einkauf.size(). Jede Verwechslung meldet der Compiler.

Kein int in spitzen Klammern

ArrayList<int> übersetzt nicht. Schreibe ArrayList<Integer> — hinein kommen trotzdem ganz normale Zahlen wie add(4).

for-each, wenn der Index egal ist

Brauchst du nur die Werte, ist for (int t : temp) kürzer und kann nie über das Ende hinauslaufen.

Videos