Vi que tem um outro post sobre isso mas não consegui compreender ainda o motivo da resposta ter sido 0 1 1 2. Alguém poderia dar uma força?
Vi que tem um outro post sobre isso mas não consegui compreender ainda o motivo da resposta ter sido 0 1 1 2. Alguém poderia dar uma força?
Oi Celso! Tudo certo?
O que acontece é que na declaração do for temos sempre 3 partes: 1 - a inicialização de um contador, 2 - a condição para iterar e 3 - a forma como iremos iterar. Geralmente, na terceira parte, apenas incrementamos o contador (fazendo i++
), mas também podemos usar outras instruções. Foi isso que foi feito no código apresentado.
Dessa forma, temos o fluxo:
i começa com 0 e, como i é menor que 2, entramos no for
, no escopo da chave mesmo. Executamos o System.out e depois precisamos de saber como iremos iterar. E iteramos fazendo duas coisas: a primeira é incrementar o i, e a segunda é imprimir o i (com o System.out da declaração do for). Assim, i passa a valer 1 e imprimimos 1.
verificamos novamente se i<2, e entramos no loop. Imprimimos 1 mais uma vez (com o System.out de dentro do loop) e precisamos novamente saber como incrementar. Dessa forma, o i passa a valer 2 e imprimimos 2.
como 2 não é menor que 2, não entramos mais no loop e terminamos a execução.
É como se nosso loop pudesse ser reescrito assim:
class A {
public static void main(String[] args) {
for(int i=0; i<2; ) {
System.out.println(i);
i++;
System.out.println(i);
}
}
}
Espero ter ajudado! Qualquer dúvida, estou à disposição :)