hlegius:
Aaah, então eu entendi errado o que o autor do livro tentou explicar. Vou ver se consigo pegar o trecho hoje quando chegar em casa para reler e ver se entendo o que ele quis dizer com referência e não por valor.
Não tem como em Java forçar uma referência ? É sempre por valor e “ponto” ?
Abraços !
eu posso até estar enganado mas… acho que você intendeu corretamente o livro, mas intendeu errado o exemplo no código.
pense no seguinte, quando você da um
new SeuObjeto()
, você cria o objeto na memória, um objeto de verdade, não uma referencia, sempre que você coloca
variavel = objeto;
variavel2 = mesmoObjeto
suaLista.add(objeto)
cada um ai guarda uma referencia para o objeto da memoria, portanto, quando você faz
variavel2 = null
você nulou a referencia variavel2 (sim, ela é uma referencia, e não o objeto), mas ainda existem as outras 2 referencias, se você fizer o mesmo com variavel, ainda vai ter a referencia adicionada na lista, mesmo que você remova da lista ainda vai existir o objeto la na memória até que o garbage colector o remova, apenas as referencias foram perdidas…
pense o seguinte, quando você tem uma variavel de um objeto, essa variavel é a referencia, não o objeto em si, ou seja:
se você da um x = new Objeto();, x aponta para esse objeto ai, se você fizer isso denovo, x vai apontar para um segundo objeto criado em memoria com o new, mas você não mecher no primeiro objeto criado… ai se você depois fizer x = null; você fez x não referenciar mais ninguém, mas os 2 objetos ainda vão estar la na memória, sem você ter mechido…