Regras de escopo em Java
Alguém pode me ajudar a entender as regras de escopo em Java? Claramente, isso não é válido:
{
int i = 0;
System.out.println(i); // fine, of course
}
System.out.println(i); // syntax error
i
é declarado dentro do{}
, e não está disponível fora. Então, e quanto a isso:
for (int i = 0; i < 10; i++) {
System.out.println(i); // fine, of course
}
System.out.println(i); // syntax error, same as above.
Estou surpreso com o erro de sintaxe aqui.i
é declarado no escopo externo e ainda não está disponível posteriormente. Ele está vinculado ao escopo do bloco interno por alguma regra especial parafor
rotações? Existem outros cenários em que isso pode acontecer?