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
|