passagem de parâmetro: porque isso acontece? [RESPONDIDO]  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
peron
JavaGuru
[Avatar]

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?"
[WWW] [Yahoo!] [MSN] [ICQ]
Rafael Nunes
Moderador
[Avatar]

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
[Email]
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
peron
JavaGuru
[Avatar]

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?"
[WWW] [Yahoo!] [MSN] [ICQ]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team