El bucle for-each proporciona un mecanismo para ejecutar un bloque de código por cada elemento de una colección. Algunas documentaciones (por ejemplo, la documentación de Oracle) se refieren a estos como bucles for mejorados.
Esta es la sintaxis general:
for(declaration: collection) {
body;
}
La declaration declara la variable que se usa para guardar los valores que se asignan desde la colección.
La collection es un array o una colección que contiene los valores que se asignarán a la variable del bucle.
El body contiene las sentencias que se ejecutarán una vez por cada valor de la colección.
Por ejemplo:
char[] vowels = {'a', 'e', 'i', 'o', 'u'};
for(char vowel: vowels) {
System.out.println(vowel);
}
que produce la siguiente salida:
a
e
i
o
u
En general, un bucle for-each es preferible a un bucle for por las siguientes razones:
for-each tiene la garantía de recorrer todos los valores.for-each es más declarativo, es decir, el código comunica qué hace en lugar de cómo lo hace.for-each es a prueba de errores, mientras que con los bucles for es fácil cometer un error de desfase por uno (piensa en usar < en lugar de <=).for-each funciona con todos los tipos de colecciones, incluidas las que no permiten usar un índice para acceder a los elementos (por ejemplo, un Set).