O laço for oferece um mecanismo para executar um grupo de instruções repetidamente até que alguma condição seja satisfeita.
O laço é composto por quatro partes:
for (initialization; test; update) {
body;
}
A initialization define um estado inicial para o laço e é executada exatamente uma vez no início dele.
Normalmente, ela declara e atribui uma variável usada na expressão de teste e na expressão de atualização.
Por exemplo:
int i = 1
A expressão test verifica se o laço deve terminar.
Se ela for avaliada como true, o corpo do laço e, em seguida, a expressão de atualização serão executados.
Se ela for avaliada como false, nem o corpo nem a expressão de atualização serão executados, e a execução continua depois da chave de fechamento do laço.
Normalmente, ela verifica a variável atribuída no bloco de inicialização.
Por exemplo:
i <= 10
Depois de executar o corpo do laço, a expressão update é executada.
Normalmente, ela incrementa ou decrementa a variável do laço em algum valor.
Por exemplo:
i++
Um laço for que imprime os quatro primeiros quadrados ficaria assim:
for (int i = 1; i <= 4; i++) {
System.out.println(i * i);
}
/* =>
1
4
9
16
*/
Se você for iterar sobre cada elemento de uma coleção, o laço for-each é preferível, mas dá para fazer isso com um laço for assim:
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]);
}
Um laço for tem sim algumas vantagens em relação ao laço for-each:
for em cenários que não envolvem coleções.