Olá
amigo Carlos,
O
amigo(se eu chamar de companheiro vão achar q sou comunista) Jonatan e o exemplo
do amigo Bruno Borges enriquecem e sanam a dúvida q Java APENAS faz a passagem
através de valores e não por referência !! Quando um objeto é instanciado e
passado como argumento por um método, O VALOR do argumento é a referencia para o
objeto !!! Esqueça se alguém pensa q vai uma "cópia do objeto"
dentro de algum método.
A passagem por valor é até uma forma inteligente
de se economizar recursos de memória.
Dê só
uma lida nesse pequeno trecho aqui, tirado de uma apostila da própria Sun (slide
137 of 506) :
Pass-by-Value
• The Java programming language only passes arguments by value • When an object instance is passed as an argument to a method, the value of the argument is a reference to the object • The contents of the object can be changed in the called method, but the object reference is never changed Na
prática, Bruno Borges peguei seu código e fiz pequenas alterações, saca o código
q o amigo Bruno colocou (envio a classe anexo tb) :
import java.util.*; public class atribuicao { public static void main(String[] args) { atribuicao roda = new atribuicao(); roda.teste(); } public void teste() {
Object a, b; a = new Vector(); b = new Date(); System.out.println("------- 1 parte ----------\n" ); System.out.println("a eh instancia de Vector? "+ (a instanceof Vector) + "\n" ); System.out.println("b eh instancia de Date? "+ (b instanceof Date) + "\n" ); metodo_atribuicao(a, b); a = b; System.out.println("------- 2 parte ----------\n" ); System.out.println("a eh instancia de Vector? "+ (a instanceof Vector) + "\n" ); System.out.println("b eh instancia de Date? "+ (b instanceof Date) + "\n" }
public void metodo_atribuicao(Object a, Object b) { a = b; System.out.println("------- 3 parte ----------\n" ); System.out.println("a eh instancia de Vector? "+ (a instanceof Vector) + "\n" ); System.out.println("b eh instancia de Date? "+ (b instanceof Date) ); } } A
saída disso aí fica assim :
------- 1 parte ----------
a eh
instancia de Vector? true
b eh
instancia de Date? true
------- 3 parte ----------
a eh
instancia de Vector? false
b eh
instancia de Date? true
------- 2 parte ---------- a eh
instancia de Vector? false
b eh
instancia de Date? true
Bom
amigos da lista espero ter ajudado a confund....quero dizer, espero ter
ajudado!! (Imagina se cai uma pergunta assim na prova de certificação
??)
EmTEMPO : Lembro-me meu GURU (Professor Paulo
Tiburcio), comentou uma vez q havia um "jeitinho" para se burlar isso em Java e
SIMULAR uma passagem por referência.
Edson CARVAlho Rua da Assembléia, 100 - 19 Andar
|
atribuicao.java
Description: Binary data
------------------------------ LISTA SOUJAVA ---------------------------- http://www.soujava.org.br - Sociedade de Usuários Java da Sucesu-SP dúvidas mais comuns: http://www.soujava.org.br/faq.htm regras da lista: http://www.soujava.org.br/regras.htm historico: http://www.mail-archive.com/java-list%40soujava.org.br para sair da lista: envie email para [EMAIL PROTECTED] -------------------------------------------------------------------------