O laço for-each oferece um mecanismo para executar um bloco de código para cada elemento de uma coleção. Alguma documentação (por exemplo, a documentação da Oracle) se refere a esses laços como enhanced for loops.
Esta é a sintaxe geral:
for(declaration: collection) {
body;
}
A declaration declara a variável usada para armazenar os valores atribuídos a partir da coleção.
A collection é um array ou uma coleção que contém os valores que serão atribuídos à variável do laço.
O body contém as instruções que serão executadas uma vez para cada valor da coleção.
Por exemplo:
char[] vowels = {'a', 'e', 'i', 'o', 'u'};
for(char vowel: vowels) {
System.out.println(vowel);
}
que produz a saída:
a
e
i
o
u
Em geral, um laço for-each é preferível a um laço for pelos seguintes motivos:
for-each tem a garantia de iterar sobre todos os valores.for-each é mais declarativo, ou seja, o código comunica o que está fazendo, em vez de como está fazendo.for-each é à prova de erros, enquanto com laços for é fácil cometer um erro de um a mais ou a menos (pense em usar < em vez de <=).for-each funciona com todos os tipos de coleção, inclusive as que não permitem usar um índice para acessar os elementos (por exemplo, um Set).