for-each in Java
Speichere drei ganze Zahlen in einem Array namens slots: 2, dann 4, dann 6. Schreibe for (int n : slots) und drucke n innerhalb der geschweiften Klammern. Der Bildschirm soll drei Zeilen zeigen: 2, dann 4, dann 6. Du schreibst auf dieser Seite keinen Index-Zähler. Jeder Durchlauf gibt dem Namen n den nächsten Wert aus dem Array. Dieses Durchlaufen ist, was diese Seite lehrt.
Ein Name für jeden Wert im Array
Lege eine kleine Programmdatei namens Pack.java an. Die public class in der ersten Zeile muss zum Dateinamen passen: public class Pack. Lass keinen älteren Skip- oder Pulse-Klassennamen in dieser Datei; der Compiler erwartet, dass Klassenname und Dateiname übereinstimmen.
Speichere in main zuerst das Array:
int[] slots = {2, 4, 6};
Diese Zeile druckt nichts. Sie hält nur drei ganze Zahlen unter dem Namen slots. Dann die for-each-Schleife:
for (int n : slots) {
System.out.println(n);
}
Das Wort for bleibt kleingeschrieben. In den runden Klammern sitzen drei Teile mit einem Doppelpunkt in der Mitte: der Typ int, der Name n für ein Element, dann ein Doppelpunkt, dann der Array-Name slots. Dieser Doppelpunkt ist kein case-Label und kein Pfadtrenner. Er markiert „jeder Wert aus slots geht in n.“ Die geschweiften Klammern halten den Rumpf. System.out.println(n); schreibt den aktuellen Wert ohne Anführungszeichen um n. Speichere die Datei, bevor du kompilierst.
Programm, das 2 dann 4 dann 6 druckt
Das ist die Version, die du zuerst kompilierst.
public class Pack {
public static void main(String[] args) {
int[] slots = {2, 4, 6};
for (int n : slots) {
System.out.println(n);
}
}
}
Aus dem Ordner, der Pack.java hält, schreibe javac Pack.java. Wenn runde Klammern, geschweifte Klammern und Doppelpunkte passen, schreibt javac keine eigene Zeile. Dann schreibe java Pack — nicht java Pack.java. Lass die Endung .java beim zweiten Befehl weg. Dieselben zwei Befehle funktionieren unter Windows und unter macOS; diese Seite braucht keine andere Shell-Schreibweise für eines der Systeme. Das Programm soll drei Zeilen drucken und stoppen: 2, dann 4, dann 6. Es fragt dich nicht nach Tastatur. Wenn das Terminal auf Eingabe wartet, steckt noch ein nextLine-Aufruf aus einer älteren Übung in der Datei. Lösche diesen Aufruf und behalte das Array plus das for-each oben. Eine falsche Bildschirmzeile heißt nicht, dass du ein neues JDK brauchst.
Geh einen vollständigen Lauf der Reihe nach durch. slots hält 2, dann 4, dann 6. Der erste Durchlauf setzt n auf 2 und println schreibt 2. Der zweite Durchlauf setzt n auf 4 und schreibt 4. Der dritte Durchlauf setzt n auf 6 und schreibt 6. Dann gibt es keine weiteren Werte, also endet die Schleife. Du hast auf dieser Seite weder int i = 0 noch i < slots.length geschrieben. Der for-each-Kopf bittet Java, jeden gespeicherten Wert einmal zu besuchen. Der Name n ist in jedem Durchlauf nur insofern neu, als er das nächste Element hält; du deklarierst ihn trotzdem einmal im Kopf als int n.
Ein String-Array auf dieselbe Weise durchlaufen
Ändere das gespeicherte Array und den Elementtyp so, dass jeder Wert ein kurzes Wort ist:
String[] tags = {"red", "blue"};
for (String t : tags) {
System.out.println(t);
}
Jetzt soll der Bildschirm zwei Zeilen zeigen: red, dann blue. Der Doppelpunkt sitzt weiterhin zwischen Elementtyp und Array-Name. Der Rumpf druckt weiterhin den Namen, der ein Element hält.
public class Pack {
public static void main(String[] args) {
String[] tags = {"red", "blue"};
for (String t : tags) {
System.out.println(t);
}
}
}
Kompiliere und starte erneut: javac Pack.java, dann java Pack. Du solltest zwei Zeilen sehen. Du hast das int-Array durch ein String-Array ersetzt und den Typ des Elementnamens an String angepasst. Nachdem du red und blue gesehen hast, kannst du die int-Demo zurücksetzen. Beide Versionen sind gültiges Java. Sie lehren dieselbe for-each-Form mit unterschiedlichen Elementarten.
Lies den String-Lauf noch einmal. tags hält red, dann blue. Der erste Durchlauf setzt t auf red und druckt es. Der zweite Durchlauf setzt t auf blue und druckt es. Dann endet die Schleife. Anführungszeichen im Array-Literal markieren den Text, der im Array liegt. println(t) ohne extra Anführungszeichen um t schreibt diese gespeicherten Buchstaben auf den Bildschirm.
Regeln, die for-each klar halten
Die runden Klammern müssen Typ, Name, Doppelpunkt und Array-Name in dieser Reihenfolge halten. for (int n slots) ohne Doppelpunkt lässt javac scheitern. Der Elementtyp muss zum Array passen: int mit einem int-Array, String mit einem String-Array. int n neben einem String[] ist nicht die Form, die diese Lektion kompiliert. Geschweifte Klammern halten den Rumpf weiterhin, wenn der Rumpf eine oder mehrere Zeilen hat.
for-each ist nicht das gezählte for von der Beat-Seite und nicht break von der Skip-Seite. Das gezählte for schrieb Start, Test und Schritt mit einem Zähler. for-each läuft Werte ab, die schon in einem Array liegen. break beendet eine Schleife früh; die erste Demo dieser Seite druckt jeden Wert. Lass keine Skip-break-Demo und kein Pulse-while in demselben main und wundere dich dann, warum der Bildschirm 1 und 2 statt 2, 4, 6 zeigt. Das main dieser Sitzung soll nur das Array und das for-each halten.
Ein häufiger Mix ist, die Syntax selbst zu drucken: System.out.println("for (int n : slots)");. Das schreibt die Zeichen des Kopfes. Es durchläuft das Array nicht. Ein anderer Mix ist System.out.println("n"); mit Anführungszeichen, was bei jedem Durchlauf den Buchstaben n druckt statt 2, 4 und 6. Behalte println(n) ohne Anführungszeichen, wenn du den Elementwert auf dem Bildschirm willst.
Wenn das Array keine Elemente hat — zum Beispiel int[] slots = {}; — läuft der Rumpf nie und der Bildschirm bleibt leer. Das ist trotzdem ein gültiges for-each; die Demos dieser Lektion halten mindestens zwei Werte, damit du die gedruckten Zeilen siehst. Wenn du später eine Indexnummer auf dem Bildschirm brauchst, kommt das gezählte for zurück; for-each ist dafür da, Werte zu besuchen, ohne diesen Index selbst zu verwalten. Einen Wert in der Schleife mit n = 9; zu ändern, schreibt den Array-Slot in dieser Anfängerform nicht um — behandle n als den Wert, den du zum Drucken liest, nicht als Werkzeug zum Bearbeiten von slots.
Was du jetzt kannst
Du kannst ein Array speichern, for (Type name : arrayName) schreiben und jeden Wert einmal drucken. Wenn der Elementtyp zum Array passt, bleibt die Schleife kompilierbar. Die nächste Seite ist methods; dort gruppiert du Zeilen unter einem Namen, den du aus main aufrufen kannst.
🧠 Testen Sie Ihr Wissen
Testen Sie Ihr Wissen
Fordern Sie sich mit diesem interaktiven Quiz heraus und sehen Sie, wie gut Sie das Thema verstehen
📝 Anweisungen
- Lesen Sie jede Frage sorgfältig
- Wählen Sie die beste Antwort für jede Frage
- Sie können das Quiz so oft wiederholen, wie Sie möchten
- Ihr Fortschritt wird oben angezeigt