Ο βρόχος for-each παρέχει έναν μηχανισμό για την εκτέλεση ενός μπλοκ κώδικα για κάθε στοιχείο σε μια συλλογή. Κάποια τεκμηρίωση (π.χ. η τεκμηρίωση της Oracle) τους αναφέρει ως ενισχυμένους βρόχους for.
Ακολουθεί η γενική σύνταξη:
for(declaration: collection) {
body;
}
Η declaration δηλώνει τη μεταβλητή που χρησιμοποιείται για να κρατά τις τιμές που ανατίθενται από τη συλλογή.
Η collection είναι ένας πίνακας ή μια συλλογή που κρατά τις τιμές που θα ανατεθούν στη μεταβλητή του βρόχου.
Το body περιέχει τις εντολές που θα εκτελεστούν μία φορά για κάθε τιμή στη συλλογή.
Για παράδειγμα:
char[] vowels = {'a', 'e', 'i', 'o', 'u'};
for(char vowel: vowels) {
System.out.println(vowel);
}
που τυπώνει:
a
e
i
o
u
Γενικά, ένας βρόχος for-each προτιμάται από έναν βρόχο for για τους παρακάτω λόγους:
for-each εγγυάται ότι θα διατρέξει όλες τις τιμές.for-each είναι πιο δηλωτικός, που σημαίνει ότι ο κώδικας επικοινωνεί τι κάνει, αντί για πώς το κάνει.for-each είναι αλάνθαστος, ενώ με τους βρόχους for είναι εύκολο να έχεις ένα σφάλμα off-by-one (σκέψου τη χρήση του < έναντι του <=).for-each λειτουργεί με όλους τους τύπους συλλογών, συμπεριλαμβανομένων εκείνων που δεν υποστηρίζουν τη χρήση θέσης για πρόσβαση σε στοιχεία (π.χ. ένα Set).