onde eu escrevi por par�metro por favor leiam "Por refer�ncia"
 
 
----- Original Message -----
Sent: Friday, May 30, 2003 7:59 AM
Subject: Re: [java-list] Pergunta for Dummies

A passagem � sempre por valor. Por par�metro somente quando vc passa um objeto. Uma String � tratada como
um objeto em Java. Pelo menos � o que diz
livro Java The Complete Reference de Herbert Schildt.
 
Daniel
----- Original Message -----
Sent: Wednesday, May 28, 2003 8:54 AM
Subject: Re: [java-list] Pergunta for Dummies




Discordo, a passagem de par�metros em Java � SEMPRE por valor, veja abaixo, um
trecho traduzido da p�gina 19 do livro Complete Java 2 Certification Study Guide
(3� edi��o) que explica esta confus�o de conceitos.

    public void metodo1() {
       Label lbl = new Label();
       lbl.setText("testo 1");
       metodo2(lbl);
       System.out.println(lbl.getText());
    }

    public void metodo2(Label arg)    {
       arg.setText("texto 2");
    }

No exemplo acima � criado um objeto da classe Label com uma refer�ncia chamada
lbl. Esta refer�ncia � passada como par�metro, o que significa que uma c�pia
dela � passada para o m�todo2. Agora temos 2 refer�ncias apontando para o mesmo
objeto, o que significa que ambas as chamadas setText ir�o modificar o mesmo
objeto. � importante notar que a c�pia aqui � entre as refer�ncias e n�o entre
objetos. Mais uma vez a passagem de argumentos � por valor mas o valor neste
caso n�o � uma grandeza num�rica mas um endere�o.

Paulo Paro.







Fabio Eduardo Thomaz <[EMAIL PROTECTED]> on 21/05/2003 16:57:24

Please respond to [EMAIL PROTECTED]

To:   [EMAIL PROTECTED]
cc:    (bcc: Paulo Roberto Paro/Stefanini)

Subject:  Re: [java-list] Pergunta for Dummies



um exemplo simples de que a passagem de parametros n�o � sempre por
valor � a passagem de um array...
o que se passa � uma refer�ncia...


Ex.:

//-----------------------------------------------------

public class Teste
{
  public static void setArray ( double dArray[] )
  {
     dArray[0] = 10;
     dArray[1] = 20;
  }
  public static void main ( String[] args )
  {
     double dArrayOriginal[] = {0,0};
     System.out.println ( "Array antes da passagem de par�metro:" );
     System.out.println ( dArrayOriginal[0] + " | " + dArrayOriginal[1] );
     setArray ( dArrayOriginal );
     System.out.println ( "Array depois da passagem de par�metro:" );
     System.out.println ( dArrayOriginal[0] + " | " + dArrayOriginal[1] );
  }
}

//-----------------------------------------------------


[]'s
Fabio Eduardo Thomaz


Rodrigo escreveu:

>Bem, at� onde sei a Classe String n�o pode ser alterada, logo quando vc
>fizer o += ele ir� instanciar uma nova String, logo a refer�ncia n�o ser�
>mais a mesma. O exemplo que me deste n�o mudou minha opini�o... Ainda
>acredito que quando a passagem for de objetos ser� por refer�ncia e n�o por
>valor... Se criar uma classe e pass�-la como parametro e dentro deste
>m�todo, eu alterar algum valor da mesma isso refletir� no meu objeto... Veja
>exemplo:
>
>public class Teste01 {
>  private int numero;
>  public Teste01(int i) {
>   setNumero( i );
>  }
>
>  public void setNumero( int i ) {
>   numero = i;
>  }
>
>  public int getNumero() {
>   return numero;
>  }
>}
>
>public class Teste {
>
> public static void main(String[] args) {
>  Teste01 t = new Teste01(10);
>  xxx( t );
>  System.out.println( t.getNumero() );
> }
>
> private static void xxx( Teste01 i ) {
>  i.setNumero( 15 );
> }
>}
>
>Veja, passei um objeto como par�metro e ao setar o valor modificou o estado
>do meu objeto...
>Quanto ao que voc� disse de o append estar alterando uma propriedade interna
>da classe... Bem, meus objetos s�o feitos de propriedades e m�todos, e se eu
>criasse dois objetos StringBuffer diferentes e passase um deles como
>par�metro alteraria apenas daquele objeto... Logo, refer�ncia

Responder a