Objetos sao sempre passados por referencia no mesmo virtual machine!!!

O exemplo do StringBuffer embaixo prova isso. A variavel foi declarada,
alterada num outro metodo e o conteudo dele mudou no primeiro metodo. Se
fosse por valor uma copia do StringBuffer ia ser criada, alterada no
outro metodo, e no primeiro metodo o conteudo nao seria alterada.

Pois, tem objetos que funcionam diferentes. Passar um String por
referencia nao faz sentido por que nao e mutavel. Por exemplo, ao
concatenar um String com outro o primeiro nao e alterada, mais sim um
terceiro String e criado.

String str = "a";

str += "b"; // cria um String novo na memoria, use StringBuffer para
ganhar performance quando voce vai concatenar um String varias vezes.

-- 
======================================
Karl Silva Lovgren
Binary Evolution
Sao Paulo - Brazil
[EMAIL PROTECTED]
http://www.binaryevolution.hpg.com.br


On Wed, 2003-05-14 at 18:57, Alexandro Strack wrote:
> Oi Rodrigo,
> 
>    N�o concordo com voc�. O que acontece na verdade � que a classe
> StringBuffer � mut�vel (diferente de String que � n�o mut�vel) e logo o que
> se passa � que o m�todo append est� alterando o valor de uma
> propriedade(vari�vel) interna da classe StringBuffer. Essa propriedade
> armazena o valor. Para voc� ter a certeza do que estou falando mude de
> StringBuffer para String e substitua o append por += . Voc� ver� que
> imprimir� JAVA.
> 
>     Para ir mais al�m mude todo o seu exemplo para trabalhar n�o com um
> StringBuffer mas com um Integer. Ver� que tamb�m n�o funcionar� pois a
> classe Integer � n�o mut�vel.
> 
>     Em resumo: a passagem de par�metro � sempre por valor.
> 
> Um abra�o,
> 
> Alexandro Strack
> ----- Original Message -----
> From: "Rodrigo" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Saturday, May 10, 2003 7:16 PM
> Subject: Re: [java-list] Pergunta for Dummies
> 
> 
> > hehehe, o exemplo n�o foi, agora sim:
> >
> > ---
> > public class Teste {
> >
> >  public static void main(String[] args) {
> >   StringBuffer s = new StringBuffer( " Java" );
> >   teste( s );
> >   System.out.println( s );
> >  }
> >  public static void teste( StringBuffer s ) {
> >   s.append( " � bala" );
> >  }
> > }
> > ----
> > A sa�da ser� "Java � bala" o q no meu ver significa que a passagem foi por
> > refer�ncia j� que alterei o meu objeto que passei por par�metro...
> >
> > Fallow
> > ----- Original Message -----
> > From: "Rodrigo" <[EMAIL PROTECTED]>
> > To: <[EMAIL PROTECTED]>
> > Sent: Saturday, May 10, 2003 7:14 PM
> > Subject: Re: [java-list] Pergunta for Dummies
> >
> >
> > > Eu sou suspeito a falar, mas pelo que sei toda a passagem de objetos em
> > java
> > > � por refer�ncia, j� as passagens de tipos b�sicos ser�o sempre por
> > valor...
> > >
> > > Desculpe-me se estiver errado...
> > >
> > > Segue um exemplo:
> > >
> > > ----- Original Message -----
> > > From: "Jos� Voss Junior" <[EMAIL PROTECTED]>
> > > To: <[EMAIL PROTECTED]>
> > > Sent: Wednesday, May 07, 2003 9:21 PM
> > > Subject: Re: [java-list] Pergunta for Dummies
> > >
> > >
> > > Corre��o, Passagem de Parametro em Java � somente por Valor!!!!!
> > > ----- Original Message -----
> > > From: Ricardo Jun Taniguchi <[EMAIL PROTECTED]>
> > > To: <[EMAIL PROTECTED]>
> > > Sent: Friday, May 02, 2003 5:36 PM
> > > Subject: RE: [java-list] Pergunta for Dummies
> > >
> > >
> > > Lembrando-se de que os par�metros s�o passados por refer�ncia em Java,
> > temos
> > > que:
> > >
> > > new Boolean(true) � esquerda = objeto A instanciado com o par�metro
> true;
> > > new Boolean(true) � direita = objeto B instanciado com o par�metro true;
> > >
> > > Como a compara��o == � feita por meio da verifica��o dos endere�os dos
> > > objetos e n�o pelo seu conteudo, naturalmente essa compara��o daria
> false.
> > >
> > > Agora, se quiser que seja true, temos que fazer:
> > >
> > > if (new Boolean(true).equals(new Boolean(true)))
> > >
> > >
> > > -----Original Message-----
> > > From: Nelson [mailto:[EMAIL PROTECTED]
> > > Sent: Tue 29-Apr-03 16:35
> > > To: SouJava
> > > Cc:
> > > Subject: [java-list] Pergunta for Dummies
> > > Algu�m pode me dizer, porque o c�digo abaixo, imprime "false" ?
> > >
> > > class teste {
> > >
> > > public static void main(String[] args) {
> > >
> > > if (new Boolean(true) == new Boolean(true)) {
> > >    System.out.println("true");
> > >  } else  {
> > >     System.out.println("false");
> > >   }
> > >  }
> > > }
> > >
> > >
> > >
> > >
> > >
> >
> > --------------------------------------------------------------------------
> > --
> > > ----
> > >
> > >
> > > ------------------------------ 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]
> >
> > -------------------------------------------------------------------------
> > >
> > >
> >
> >
> > ------------------------------ 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] 
> -------------------------------------------------------------------------



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