Bom pessoal, estava fazendo o exercício Uma pilha de problemas do livro Java use a cabeça, capítulo 3, pág. 49 e fiquei com uma dúvida. Tentei achar sobre esse mesmo exercício na internet, mas o que achei não foi satisfatório. Peço perdão se já temos esse tópico aqui no fórum, pois sou novato e ainda estou engatinhando. Gostaria de ajuda de vocês nesse problema.
O exercício é o seguinte:
Determinar que variáveis de referência apontarão para quais objetos. Nem todas variáveis serão usadas, e alguns objetos podem ser
referenciados mais de uma vez.
class HeapQuiz {
int id = 0;
public static void main(String [] args) {
int x = 0;
HeapQuiz [] hq = new HeapQuiz[5];
while ( x < 3 ) {
hq[x] = new HeapQuiz();
hq[x].id = x;
x = x + 1;
}
hq[3] = hq[1];
hq[4] = hq[1];
hq[3] = null;
hq[4] = hq[0];
hq[0] = hq[3];
hq[3] = hq[2];
hq[2] = hq[0];
}
}
Nas respostas diz que as referências:
hq[0] é nulo
hq[1] apontará p/ o objeto id=1;
hq[2] é nulo
hq[3] apontará p/ o objeto id=2;
e o hq[4] apontará p/ o objeto id=0;
Qual seria a interpretação certa nas referências nulas que são hq[0] e hq[2]?
Vamos começar pela referência hq[0].No código diz que ela é igual a referência de hq[3], logicamente ela seria nula, mas embaixo diz que ela é igual a ref. de hq[2], seria então o objeto de id=2, mas hq[2] é igual a ref. de hq[0] que é o objeto de id=0.
Depois temos o hq[2] que é igual a ref. hq[0]. Se ela aponta p/ hq[0] então seu objeto id deveria ser 0. Acho que o certo é continuar o raciocínio, não parar aí. Então voltamos um pouco p/ cima e vemos que se hq[0] aponta p/ hq[3] que é null, então temos uma ref. nula. É isso?
É algo simples, mas me perdi no raciocínio. Obrigado pela ajuda desde já.