5
respostas

Dúvida do laço for do ex. 3

O código é:

class Teste {
    static int i = 3;
    public static void main(String[] a) {
        for (new Teste().i = 10; new Teste().i < 100;
             new Teste().i++) {
            System.out.println(i);
        }
    }
}

O segundo argumento do laço for instancia um novo Teste().i em cada iteração. Mas, por isso, ele é sempre 3. E 3 é sempre menor que 100. Então toda validação retorna true porque new Teste().i nunca muda.

Como esse for não roda eternamente? O que eu não peguei aqui?

5 respostas

No laço for ele declara o i do novo Teste como 10 e a cada iteração ele incrementa 1 unidade no i já que o 3 argumento do laço for faz new Teste().i++ , sendo assim ele não vai ser sempre 3 para esse laço for. Eu acredito que seja isso.

Mas eles não deveriam ser 3 i diferentes entre si, se ele instancia um new a cada vez?

Acredito que não, acredito que ele só instancia uma vez na criação do teu laço for. Tipo, quando você declara o laço for sua classe Teste não está instanciada, saca? Daí o uso do new, não acredito que o java instancie a cada iteração uma classe nova. Mas isso tá indo mais de achismo meu do que certeza kkkkk

Pois é. Mas nossa, não tem instrutor aqui, não? A gente tá sozinho?

Interessante como a Alura deixa a gente a Deus dará assim.