----- Original Message -----
From: "Renato Quedas" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, October 04, 2001 10:29 AM
Subject: Re: [java-list] Re: Artigo Java x C#


> Po Leonardo nao pisa na bola cara.
>
> >     public void inc(Integer i) {
> >         i = new Integer(i.intValue()++);
> se voce prestar aten��o no seu codigo vai ver que voc� cria uma nova
> instancia
> de um Integer nesta linha acima, perdendo assim completamente a referencia
> que voc� passou na chamada.

Pessoal interessado nesta discuss�o, (J� devem ser poucos.. t� ficando pior
do que a discuss�o sobre overloading/polimorfismo :)

Eu sei que estou criando outo objeto.. o �nico erro que h� nesta linha � que
i.intValue()++ n�o compila porque � equivalente � i.intValue() = i.intValue()
+ 1 que n�o � v�lido. Eu estou atribuindo uma nova instancia a i para mostrar
que o parametro � passado por valor.. se n�o fosse a altera��o teria efeito
al�m do escopo do metodo.

>
> Type wrappers n�o s�o uma boa op��o para demonstrar passagem por referencia
> porque n�o permitem que voc� altere o valor embutido neles.

A passagem de parametros segue a mesma regra para qualquer objeto ou tipo em
java.. sempre por valor.

> Que tal alguma coisa assim:
>
> public class App {
>
>   public App() {
>   }
>
>   public static void main(String[] args) {
>     App app1 = new App();
>     Inteiro inteiro = new Inteiro();
>     inteiro.setValor(1);
>     System.out.println("O valor do inteiro �:" + inteiro.getValor());
>     inc(inteiro);
>     System.out.println("O valor do inteiro �:" + inteiro.getValor());
>
>   }
>
>   public static void inc(Inteiro obj) {
>      int novoValor = obj.getValor();
>      novoValor = ++novoValor;
>      obj.setValor(novoValor);
>   }
>
> }
>
> class Inteiro {
>
>   public Inteiro() {
>   }
>
>   private int valor;
>
>   public int getValor() {
>     return valor;
>   }
>   public void setValor(int valor) {
>     this.valor = valor;
>   }
> }
>
> Entao com isso provamos o que est� escrito em qualquer livro que preste:
> Objetos em java s�o sempre passados por refer�ncia enquanto tipos
primitivos
> s�o passados por valor.

Como um outro participante da lista j� informou, o livro de estudos para
certifica��o Java 2 fala expliciramente que toda passagem de parametros em
java � por valor. Este exemplo n�o serve para provar que objetos s�o passados
por referencia (Mesmo porque � imposs�vel provar isto ;-) pois voc� n�o
recebe um objeto como parametro e altera o valor dele.

>
> Um abra�o
>
> Renato

Bom, j� mostrei meus argumentos em v�rios posts e acho que n�o tem sentido
mais ficar repetindo-os.. vamos mudar pra uma discuss�o mais legal tipo "Qual
� melhor JBuilder ou Forte", "Vale a pena certifica��o" (Acho que vale.. voc�
aprende que PDP � por valor ;-) ou ent�o "Method overloading �
polimorfismo?".

[]'s,

Leonardo.

> ----- Original Message -----
> From: "Leonardo Souza Mario Bueno" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Wednesday, October 03, 2001 5:36 PM
> Subject: Re: [java-list] Re: Artigo Java x C#
>
>
> > Nain, nain. Java n�o tem passagem por referencia nem para objetos.
> >
> > Ex:
> >
> >     public void inc(Integer i) {
> >         i = new Integer(i.intValue()++);
> >         System.out.println("i = " + i); // i = 2
> >     }
> >
> >     i = new Integer(1);
> >     inc(i);
> >     System.out.println("i = " + i); // i = 1
> >
> > Resultado:
> >
> > i = 2
> > i = 1
> >
> > Ao chamar inc(i) � passada uma referencia ao objeto i por valor.. ou
seja,
> > mudan�as na referencia dentro do metodo n�o ter�o efeito fora dele..
> >
> > []'s,
> >
> > Leonardo.
> >
> > ----- Original Message -----
> > From: "Carlos E O Chierici" <[EMAIL PROTECTED]>
> > To: <[EMAIL PROTECTED]>
> > Sent: Wednesday, October 03, 2001 1:35 PM
> > Subject: Re: [java-list] Re: Artigo Java x C#
> >
> >
> > > A passagem de parametros em Java funciona assim:
> > >
> > > - P/ objetos: por referencia
> > > - P/ primitivos: por valor
> > >
> > > Veja o exemplo:
> > >
> > > public class Teste
> > > {
> > >    public void run()
> > >    {
> > >       TObj obj = new TObj();
> > >       obj .i = 3;
> > >       System.out.println(obj.i); // obj.i = 3
> > >       NovoInt(obj);
> > >       System.out.println(obj.i); // obj.i = 5
> > >    }
> > >
> > >    public void NovoInt(TObj meuObj)
> > >    {
> > >       meuObj.i = 5;
> > >    }
> > >
> > >    public static void main(String args[])
> > >    {
> > >       Teste t = new Teste();
> > >        t.run();
> > >    }
> > > }
> > >
> > > class TObj
> > > {
> > >    public int i;
> > > }
> > >
> > >
> > > []s
> > >
> > > Carlos E O Chierici
> > > [EMAIL PROTECTED]
> > >
> > > ----- Original Message -----
> > >
> > > From: <[EMAIL PROTECTED]>
> > > To: <[EMAIL PROTECTED]>
> > > Sent: Wednesday, October 03, 2001 9:52 AM
> > > Subject: RE: [java-list] Re: Artigo Java x C#
> > >
> > >
> > > S�rgio,
> > >
> > > Eu gostaria de fazer uma pequena corre��o no seu email.
> > >
> > > Java n�o possui passagem por refer�ncia. Somente por valor. Existe uma
> > forma
> > > de "simular" passagem de par�metros por refer�ncia, utilizando os
> objetos
> > ou
> > > tipos primitivos armazenados em um array, por exemplo. Mas n�o existe
> > > passagem por refer�ncia.
> > >
> > > Antes que o algu�m d� pulinhos de alegria, eu pergunto: e qual � o
> > problema?
> > > Algu�m por favor, apresente um artigo demonstrativo, baseado em testes
> de
> > > performance ou de algum requisito que mostre qual � o grandis�ssimo
> > problema
> > > de Java utilizar passagem por valor, e n�o por refer�ncia? Mesmo que
> haja,
> > > isso significa que Java � ruim?
> > >
> > > Abra�os,
> > > Denard
> > >
> > >
> > > ------------------------------ 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
> > > 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
> > 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
> 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
para sair da lista: envie email para [EMAIL PROTECTED] 
-------------------------------------------------------------------------

Responder a