Respondam se puderem

Considerem o código abaixo:

public  class Clas {
	
    static int i;

    public static void main(String args[]){
	 	
        for(i=0;i<3;i++){

            System.out.print(i);
	 	
        }
	 	
        for(int i=2;i<3;i++){

            System.out.print(i);
	 	

        }

        int i;

        for(i=0;i<2;i++){

            System.out.print(i);
        }

        System.out.println(Clas.i);
    }
}

A saida será:0122013… Alguem poderia me explicar como foi atribuido o valor 3 em (Clas.i)? Grato!!

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.

hfboom,

mas em for(int i=2;i<3;i++){

System.out.print(i);

}

o ultimo valor de ‘i’ é 2,correto?

Caro raf4ever,

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,

flw

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;

Deu para entender?

:slight_smile: o final da iteração é no }

É…
Eu não tinha lido com atenção!
:wink: