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?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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 :)