até a linha em q tu declara
int i;
o prog ta usando Clas.i, e o último valor dele foi 3, qunado saiu do ‘for’
o ‘for’ seguinte usa o novo i, e no último print voce especifica q quer o i da classe, q ainda tem valor 3.
O processo de “incremento” ( parte 3 ) ocorre somente no final de cada iteração do for, desta forma quando a condição i (valor = 3) < 3 o valor de i é 3.
for( [parte 1]; [parte 2]; [parte 3]){ }
Observação:
O for possui todas as partes (seções) independentes,
Olá,
Vamos ver se eu consigo te explicar.
Quando você declara uma variavel de instancia (fora de qualquer metodo)
static int i;
Ela pode ser usada em qualquer metodo dessa classe.
No 1º for
for(i=0;i<3;i++){
System.out.print(i);
}
Olhe que ele não declara nenhum i… Ele usa o i declarado fora do metodo.
E corrigindo o que o fabriciogiordani falou
O for funciona da seguinte mandeira
for (Parte1; Parte2; Parte4)
{
Parte3;
}
Ou seja, no 1º for no final ele vai fazer o loop com o i valendo: 0,1,2 quando ele estiver valendo 2 ele vai fazer o teste e vai da true após isso o i vale 3 e o teste da false. Pro isso que o Clas.i fica com 3
e depois antes do ultimo for ele declara um init i;
apartir dai tudo que for somente i vai ser esse i chamado variavel local e se você quiser chamar o i de fora teria que usar a palavra reservada “this” por exemplo this.i=9;