| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/09/2006 17:11:30
|
peron
JavaGuru
![[Avatar]](/images/avatar/76383b34503afb0508f8364787c55800.jpg)
Membro desde: 09/06/2005 09:39:31
Mensagens: 236
Localização: Blumenau/SC
Offline
|
Olá companheiros,
Estava aqui estudando e me deparei com um problema que não consigo entender.
dado o código acima, porque que quando eu dentro do método trocaReferencia troco a referência de t, ele ignora minhas alterações?
Sei que java sempre passa Objetos como referência, portanto, nao deveria referenciar o novo objeto?
Porém o que acontece é que ele simplesmente mantém o 1 objeto...
SUPONHO que isso seja porque o objeto foi criado dentro do método, então seu escopo é só dentro do método e ele se perde quando o metodo termina. é isso?
alguma luz?
grato desde já por qualquer ajuda
|
Marcos Peron
http://www.marcosperon.com
"Dizem que, no início, Deus criou o céu e a Terra. Mentira! Na verdade, no início Deus criou Java. Onde achas que ele programou o mundo, oras?" |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/09/2006 17:27:30
|
Rafael Nunes
Moderador
![[Avatar]](/images/avatar/d072677d210ac4c03ba046120f0802ec.png)
Membro desde: 09/10/2003 13:41:06
Mensagens: 2890
Localização: sao bernardo do campo
Offline
|
É mais ou menos a questão do escopo. Em Java todas as passagens de parâmetro são por valor, inclusive objetos, só que no caso de objetos o que é passado, é uma cópia do valor da referência do objeto.
Nas linhas 16 e 17 você cria dois objetos (A e B)
Na linha 18, está passando uma cópia da refência do objeto A para o método, e quando modifica o valor do atributo número, está trocando o valor do atributo no objeto A, ao qual t1 se referencia.
Na linha 20 você está passando a cópia da referência para o objeto B, porém na linha 26, você cria uma novo objeto (C) e a referência passa a apontar para este objeto.
Na linha 27 você modifica o valor do atributo, mas do atributo do objeto C. E na linha 21 ao imprimir, está imprimindo o valor do atributo do objeto B
|
------------------------------------------------------------------
"Think different? I'd be happy if most people would just think..."
http://www.yaw.com.br
http://twitter.com/rafanunes
http://twitter.com/youandwe
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/09/2006 17:31:16
|
jeffersonsilvadeamorim
Debugger
Membro desde: 26/03/2006 11:26:07
Mensagens: 72
Localização: Recife - PE
Offline
|
Olá amigo!!
1°) Referências não armazenam objetos e sim endereços onde se podem encontrar os objetos referidos.
2°) Ao passar uma referência como parâmetro para um método, o que será passado será o seu valor (o endereço) e não a referência.
Nesse método:
Você só modificou o endereço para o qual a referência t está apontando!! t2 continua apontando para o mesmo endereço!!
Se ainda tiver dúvidas, posta aew!!
Flw!! Espero ter ajudado!!
|
Cursando - Engenharia da computação - UPE
SCJP 5.0 - 94%, SCWCD 5.0 - 91%, SCBCD 5.0 - 83%
Programa de qualificação tecnológica(PQT) - Perfil: Engenheiro de Processos - QUALITI
Perfil: Desenvolvedor de aplicações corporativas e web Java - QUALITI
Técnico em desenvolvimento de sistemas - SENAC
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 28/09/2006 17:42:13
|
peron
JavaGuru
![[Avatar]](/images/avatar/76383b34503afb0508f8364787c55800.jpg)
Membro desde: 09/06/2005 09:39:31
Mensagens: 236
Localização: Blumenau/SC
Offline
|
Entendi perfeitamente!
Muito obrigado pela ajuda.
att.
|
Marcos Peron
http://www.marcosperon.com
"Dizem que, no início, Deus criou o céu e a Terra. Mentira! Na verdade, no início Deus criou Java. Onde achas que ele programou o mundo, oras?" |
|
|
 |
|
|