P�gina 328 do livro Thinking in Java, do Bruce Eckel:

 

Na se��o "pass by value" ele discute com mais detalhes essa quest�o, apesar de desde o come�o do cap�tulo ele dar a entender que existe passagem por refer�ncia.

Ele coloca dois pontos de vista.

No primeiro, ele afirma: "Java passes everything by value".

No segundo, ele diz: "Java passes primitives by value(no argument there) but objects are passed by reference". Mais adiante, no mesmo par�grafo, ele diz: "Since ou don�t get a local copy of the object when you pass it into a method, objects are clearly not passed by value"

 

Leiam com aten��o essa se��o e ver�o o que digo abaixo.

 

Se vcs lerem com bastante aten��o, ele fala de um handle. Esse handle � o endere�o para o objeto, o que ele,logo na primeira p�gina do cap�tulo, tamb�m chama de safety pointer(ponteiros seguros).

O que acontece em Java � que n�o h� como passar o objeto como par�metro, e sim o handle dele. Quando o m�todo recebe o handle, � criada uma c�pia do handle, mas o objeto continua quietinho, n�o � criada uma c�pia dele. Nesse momento, existem dois handles apontando para o mesmo objeto. Isso gera um comportamento similar � passagem por refer�ncia, porque utilizando um ou outro, o estado do objeto vai ser alterado.

 

De uma vez por todas: N�O EXISTE PASSAGEM POR REFER�NCIA EM JAVA!!!!!

O comportamento � muito similar, mas � por valor.

 

Abra�os,

Denard

 

 

-----Original Message-----
From: Marcos Guedes [mailto:[EMAIL PROTECTED]]
Sent
: quinta-feira, 4 de outubro de 2001 08:31
To: [EMAIL PROTECTED]
Subject: Re: [java-list] Re: Artigo Java x C#

 

Bem, sei que n�o tenho ainda tanta experi�ncia com

Java, mas o que aprendi no Thinking in Java de Bruce

Eckel � exatamente o que o Carlos Chierici falou:

objetos s�o sempre passados por refer�ncia.

 

--- Leonardo Souza Mario Bueno <[EMAIL PROTECTED]>

escreveu: > Nain, nain. Java n�o tem passagem por

referencia nem

> para objetos.

>

> Ex:

>

>���� public void inc(Integer i) {

>�������� i = new Integer(i.intValue()++);

>�������� System.out.println("i = " + i); // i = 2

>���� }

>

>���� i = new Integer(1);

>���� inc(i);

>���� System.out.println("i = " + i); // i = 1

>

> Resultado:

>

> i = 2

> i = 1

>

> Ao chamar inc(i) � passada uma referencia ao objeto

> i por valor.. ou seja,

> mudan�as na referencia dentro do metodo n�o ter�o

> efeito fora dele..

>

> []'s,

>

> Leonardo.

>

> ----- Original Message -----

> From: "Carlos E O Chierici" <[EMAIL PROTECTED]>

> To: <[EMAIL PROTECTED]>

> Sent: Wednesday, October 03, 2001 1:35 PM

> Subject: Re: [java-list] Re: Artigo Java x C#

>

>

> > A passagem de parametros em Java funciona assim:

> >

> > - P/ objetos: por referencia

> > - P/ primitivos: por valor

> >

> > Veja o exemplo:

> >

> > public class Teste

> > {

> >��� public void run()

> >��� {

> >������ TObj obj = new TObj();

> >������ obj .i = 3;

> >������ System.out.println(obj.i); // obj.i = 3

> >������ NovoInt(obj);

> >������ System.out.println(obj.i); // obj.i = 5

> >��� }

> >

> >��� public void NovoInt(TObj meuObj)

> >��� {

> >�����meuObj.i = 5;

> >��� }

> >

> >��� public static void main(String args[])

> >��� {

> >������ Teste t = new Teste();

> >������� t.run();

> >��� }

> > }

> >

> > class TObj

> > {

> >��� public int i;

> > }

> >

> >

> > []s

> >

> > Carlos E O Chierici

> > [EMAIL PROTECTED]

> >

> > ----- Original Message -----

> >

> > From: <[EMAIL PROTECTED]>

> > To: <[EMAIL PROTECTED]>

> > Sent: Wednesday, October 03, 2001 9:52 AM

> > Subject: RE: [java-list] Re: Artigo Java x C#

> >

> >

> > S�rgio,

> >

> > Eu gostaria de fazer uma pequena corre��o no seu

> email.

> >

> > Java n�o possui passagem por refer�ncia. Somente

> por valor. Existe uma

> forma

> > de "simular" passagem de par�metros por

> refer�ncia, utilizando os objetos

> ou

> > tipos primitivos armazenados em um array, por

> exemplo. Mas n�o existe

> > passagem por refer�ncia.

> >

> > Antes que o algu�m d� pulinhos de alegria, eu

> pergunto: e qual � o

> problema?

> > Algu�m por favor, apresente um artigo

> demonstrativo, baseado em testes de

> > performance ou de algum requisito que mostre qual

> � o grandis�ssimo

> problema

> > de Java utilizar passagem por valor, e n�o por

> refer�ncia? Mesmo que haja,

> > isso significa que Java � ruim?

> >

> > Abra�os,

> > Denard

> >

> >

> > ------------------------------ 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

> > para sair da lista: envie email para

> [EMAIL PROTECTED]

> >

>

-------------------------------------------------------------------------

> >

>

>

> ------------------------------ 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

> para sair da lista: envie email para

> [EMAIL PROTECTED]

>

-------------------------------------------------------------------------

>

 

_______________________________________________________________________________________________

Yahoo! GeoCities

Tenha seu lugar na Web. Construa hoje mesmo sua home page no Yahoo! GeoCities. � f�cil e gr�tis!

http://br.geocities.yahoo.com/

 

------------------------------ 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

para sair da lista: envie email para [EMAIL PROTECTED]

-------------------------------------------------------------------------

Responder a