N�o, � por valor... Veja bem, se fosse por refer�ncia, quando � chamado o new do array ele deveria alterar o de fora tamb�m, pois se � uma refer�ncia, ele est� mexendo diretamente na posi��o de mem�ria do objeto... No in�cio eu tbm achava q era por refer�ncia, tanto � que estava defendo isso tbm... Mas com o exemplo do Leonardo fica bem claro que � por valor, al�m do mais, se vc pesquisar no site da sun (java.sun.com), nos tutoriais, se n�o me engano, l� encontrar� uma se��o dizendo que no java toda passagem � por valor...
Pelo que entendi atrav�s do exemplo do Leonardo, o valor passado � a posi��o na mem�ria do objeto e por isso altera o de fora tbm. Mas se alteramos esta posi��o com o new, nada � replicado para fora e isso n�o deveria acontecer se fosse passagem por refer�ncia...
A minha id�ia do funcionamento � mais ou menos a seguinte:
public class Class1
{
   String s1;
   public Class1()
   {
     this.s1 = "Valor 1"; //o valor inicial �
     Valor 1
   }
   public void alteraObjeto(Class1 c1) 
   {
     c1.s1 = "Valor 2";
   }
}
 
public class Class2
{
   public static void main(String [] args)
   {
     Class1 c1 = new Class1();
     Class1 c2 = new Class1();
     System.out.println(c1.s1);
     c2.alteraObjeto(c1);
     System.out.println(c1.s1);
   }
}
 
Quando crio a v�riavel c1, ela se encontra, por exemplo na posi��o 1 da mem�ria, e essa vari�vel aponta para a posi��o 100 que � onde se encontra o objeto. Quando passo c1 para o m�todo a posi��o de c1 dentro do m�todo ser� 2 e n�o mais 1, entretanto a posi��o dois tbm apontara para 100, logo qquer altera��o feita no m�todo ser� vista por fora pois as duas vari�veis apontam para o mesmo objeto. Entretanto, ao executar o new a posi��o que c1 (dentro do m�todo) aponta deixar� de ser 100. Se fosse por refer�ncia, a posi��o dos dois c1 seria a mesma e ao executar o new mudaria dentro e fora.
    N�o sei se � assim que funciona internamente, mas foi o que eu abstrai do exemplo... Veja que na chamada existem as duas vari�veis nos registros de ativa��o, elas apenas apontam para o mesmo local...
 
Espero ter sido claro no exemplo e espero ter ajudado.
 
Rodrigo
 
----- Original Message -----
From: Alan
Sent: Tuesday, June 10, 2003 6:05 PM
Subject: Re: [java-list] Pergunta for Dummies

Como por valor se o conte�do do Array est� sendo alterado...???
 
Preste aten��o quando o array � criado no m�todo main, ele � criado com os seguintes valores:
[0,1,2].
E quando o System.out.println retorna o Array ele foi alterado para:
[0,1,99]...
 
...??? Por refer�ncia!!!
Alan.
----- Original Message -----
Sent: Thursday, June 05, 2003 10:19 AM
Subject: Re: [java-list] Pergunta for Dummies

aqui vai um link que eu peguei no GUJ que mostra que a passagem � feita por valor

http://www.geocities.com/mcglonec1978/javacert/javacert.htmlhttp://www.geocities.com/mcglonec1978/javacert/javacert.html

 

[]s

l�o

>From: "Alan" <[EMAIL PROTECTED]>
>Reply-To: [EMAIL PROTECTED]
>To: <[EMAIL PROTECTED]>
>Subject: Re: [java-list] Pergunta for Dummies
>Date: Fri, 30 May 2003 00:02:05 -0300
>
>Ol�,
>
>Objetos e Arrays s�o passados por refer�ncia.
>Ai vai um exemplo:
>-------------------------------------------
>package teste;
>
>public class Class1
>{
> String s1;
> public Class1()
> {
> this.s1 = "Valor 1"; //o valor inicial �
>Valor 1
> }
>
> public void alteraObjeto(Class1 c1) //esse m�todo recebe uma classe
>Class1 por refer�ncia
> {
> c1.s1 = "Valor 2"; //o valor � alterado para
>Valor 2
> }
>}
>--------------------------------------
>package teste;
>
>public class Class2
>{
> public static void main(String [] args)
> {
> Class1 c1 = new Class1(); //aqui o valor � setado para Valor 1
> Class1 c2 = new Class1();
>
> System.out.println(c1.s1); // Valor 1 � exibido
> c2.alteraObjeto(c1); //aqui o objeto � alterado para
>Valor 2, pois � passado por refer�ncia
> System.out.println(c1.s1); // Valor 2 � exibido. A classe Class1
>foi alterada por refer�ncia
> }
>}
>
>---------------------------------------------
>----- Original Message -----
>From: "Leonardo Hartleben Reinehr" <[EMAIL PROTECTED]>
>To: <[EMAIL PROTECTED]>
>Sent: Wednesday, May 21, 2003 4:13 PM
>Subject: RES: [java-list] Pergunta for Dummies
>
>
>
>Ol�,
>
> > Ainda acredito que quando a passagem for de objetos ser� por refer�ncia
> > e n�o por valor...
>
>Em Java, par�metros s�o sempre passados por valor, independente se o
>par�metro � um objeto ou um tipo primitivo. Fa�a o teste a seguir que voc�
>vai comprovar isso:
>
>public class Teste {
> public static void main(String[] args) {
> String str = "Valor 1";
> teste(str);
> System.out.println(str);
> }
>
> public static void teste(String s) {
> s = "Valor 2";
> }
>}
>
>O texto que ser� impresso � "Valor 1".
>
>Veja em http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html,
>no item "Pass by Value", que l� explica direitinho o que acontece na
>passagem de par�metros, e porque os casos que voc� colocou funcionam. Aqui
>na lista mesmo, h� algum tempo, essa d�vida apareceu e houve bastante
>debate, d� uma olhada no hist�rico.
>
>Um abra�o,
>Leonardo
>
>------------------------------ 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]
>-------------------------------------------------------------------------
>
>
>
>
>------------------------------ 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]
>-------------------------------------------------------------------------
>


MSN Hotmail, o maior webmail do Brasil. Fa�a o seu agora. ------------------------------ 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] -------------------------------------------------------------------------

Responder a