A for-each ciklus lehetőséget ad arra, hogy egy gyűjtemény minden elemén lefuttass egy kódblokkot. Egyes dokumentációk (például az Oracle dokumentációja) „enhanced for” ciklusként hivatkoznak rá.
Íme az általános szintaxis:
for(declaration: collection) {
body;
}
A declaration deklarálja azt a változót, amely a gyűjteményből hozzárendelt értékeket tárolja.
A collection egy tömb vagy gyűjtemény, amely azokat az értékeket tartalmazza, amelyeket a ciklusváltozónak rendelünk hozzá.
A body azokat az utasításokat tartalmazza, amelyek a gyűjtemény minden egyes értékére egyszer futnak le.
Például:
char[] vowels = {'a', 'e', 'i', 'o', 'u'};
for(char vowel: vowels) {
System.out.println(vowel);
}
aminek a kimenete:
a
e
i
o
u
A for-each ciklus általában előnyösebb a for ciklusnál, a következő okok miatt:
for-each ciklus garantáltan az összes értéket bejárja.for-each ciklus deklaratívabb, ami azt jelenti, hogy a kód azt fejezi ki, mit csinál, és nem azt, hogyan csinálja.for-each ciklust nem lehet elrontani, míg a for ciklusoknál könnyen becsúszik egy off-by-one hiba (gondolj a < és a <= használatára).for-each ciklus minden gyűjteménytípuson működik, még azokon is, amelyek nem támogatják az elemek indexszel való elérését (például egy Set).