Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Dúvida no Ex. 4 da Aula 1 - Defina o escopo de variáveis

Bom dia,

Eu não entendi essa questão! Quando eu faço new + construtor() estou criando um novo objeto, no exemplo eu tenho 3 instruções como essa dentro do escopo do for, ele criou novos objetos ou está acessando o mesmo? Eu não entendi.

5 respostas

Ola, Diego santana fernandes !

Sim você esta correto, cada vez que executar o new, você estará criando um nova instancia.

Se passar em um for, e dentro dele executar um new a cada iteração, irá criar novas instancias.

Abraço!

Boa tarde Cristiano!

Então esse loop é infinito?

Diegão !

Da uma olhada nesse trecho do for new Teste().i < 100

Ele vai executar o for enquanto Teste().i for menor do que 100.

 for (new Teste().i = 10; new Teste().i < 100;
             new Teste().i++) {
            System.out.println(i);
        }

Endenteu agora ?

Abraço!

Exato!

Eu queria saber se eu criei 3 instâncias de objeto?

for ( new Teste(){1º objeto}.i = 10; new Teste()[2º objeto}.i < 100; new Teste(){3º objeto}.i++)

eu entendi que .i é um acesso ao membro, o problema é saber se eu estou instanciando um novo objeto em cada parâmetro do for, ou o compilador entende que é o mesmo objeto? como fazemos com uma variável int, sabemos que ele está referenciando a mesma variável, isso ocorre também com o objeto? Toda vez que dou new Teste().i estou simplesmente referenciado o membro do objeto que foi criado na atribuição do valor 10 ao membro?

Então dentro da declaração do for eu estou criando uma única instância e fazendo referência sequentemente? E dentro do escopo do for quando instancio um objeto estou criando um novo, é isso?

solução!

Diego.

Cada vez que ele passar pelo for ele vai instanciar 3 vezes o new Teste().

Um teste que vc pode fazer é criar um construtor vazio na classe teste e colocar um System.out.println("Passei pelo construtor").

Assim você pode acompanhar cada vez que ele passa pelo construtor.

Blz ?

Abraço!