Eu sei que essa questão já foi respondida há muito tempo, mas, para mim, não ficou claro. O código já sei que está ok, compila, mas qual seria a diferença para outros exercícios em que a variável foi iniciada dentro do laço e por isso não compilava?
Por exemplo, em outro exercício ( exercício 7)
class Xyz1 {
public static void main(String[] args) {
int y;
for(int x = 0; x<10; ++x) {
y = x % 5 + 2;
}
System.out.println(y);
}
}
É um código que não compila com a justificativa: "O código não compila na linha 8, onde estamos imprimindo o valor de y na tela. O compilador não tem certeza se a variável y vai ser iniciada sempre. Como a declaração é feita e o único valor atribuído é dentro do for, o compilador não tem certeza se o for vai ser executado mesmo."
Comparando os dois exercícios, percebi que o erro de compilação está na posição onde se inicia a variável no for, ou seja, nem sempre uma variável que é iniciada no for não será compilada, certo?