Die for-each-Schleife bietet eine Möglichkeit, einen Block Code für jedes Element in einer Sammlung auszuführen. Manche Dokumentationen (z. B. die Oracle-Dokumentation) nennen sie auch „enhanced for loops“.
Hier ist die allgemeine Syntax:
for(declaration: collection) {
body;
}
Die declaration deklariert die Variable, die die aus der Sammlung zugewiesenen Werte aufnimmt.
Die collection ist ein Array oder eine Sammlung, die die Werte enthält, die der Schleifenvariable zugewiesen werden.
Der body enthält die Anweisungen, die einmal für jeden Wert in der Sammlung ausgeführt werden.
Zum Beispiel:
char[] vowels = {'a', 'e', 'i', 'o', 'u'};
for(char vowel: vowels) {
System.out.println(vowel);
}
was Folgendes ausgibt:
a
e
i
o
u
Im Allgemeinen ist eine for-each-Schleife einer for-Schleife aus den folgenden Gründen vorzuziehen:
for-each-Schleife durchläuft garantiert alle Werte.for-each-Schleife ist deklarativer, das heißt, der Code teilt mit, was er tut, statt wie er es tut.for-each-Schleife ist narrensicher, während man bei for-Schleifen leicht einen Off-by-one-Fehler hat (denk an < gegenüber <=).for-each-Schleife funktioniert mit allen Sammlungstypen, auch mit denen, die keinen Indexzugriff auf ihre Elemente unterstützen (z. B. ein Set).