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
|