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