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



----- Original Message ----- 
From: "Alexandro Strack" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, May 14, 2003 6:57 PM
Subject: Re: [java-list] Pergunta for Dummies


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