Re: [java-list] Pergunta for Dummies

2003-06-25 Thread leonardo bruno
Cara,
se eu to passando uma copia da referencia eu posso modificar o conteudo do 
objeto,
java sempre foi e sempre sera pass-by-value, como é passado uma copia do 
valor da - se a impressao  de é pass-by-reference

From: "Alan" <[EMAIL PROTECTED]>
Reply-To: [EMAIL PROTECTED]
To: <[EMAIL PROTECTED]>
Subject: Re: [java-list] Pergunta for Dummies
Date: Tue, 10 Jun 2003 18:05:56 -0300
Como por valor se o conteúdo do Array está sendo alterado...???

Preste atenção quando o array é criado no método main, ele é criado com os 
seguintes valores:
[0,1,2].
E quando o System.out.println retorna o Array ele foi alterado para:
[0,1,99]...

...??? Por referência!!!
Alan.
  - Original Message -
  From: leonardo bruno
  To: [EMAIL PROTECTED]
  Sent: Thursday, June 05, 2003 10:19 AM
  Subject: Re: [java-list] Pergunta for Dummies
  aqui vai um link que eu peguei no GUJ que mostra que a passagem é feita 
por valor

  
http://www.geocities.com/mcglonec1978/javacert/javacert.htmlhttp://www.geocities.com/mcglonec1978/javacert/javacert.html



  []s

  léo



  >From: "Alan"
  >Reply-To: [EMAIL PROTECTED]
  >To:
  >Subject: Re: [java-list] Pergunta for Dummies
  >Date: Fri, 30 May 2003 00:02:05 -0300
  >
  >Olá,
  >
  >Objetos e Arrays são passados por referência.
  >Ai vai um exemplo:
  >---
  >package teste;
  >
  >public class Class1
  >{
  > String s1;
  > public Class1()
  > {
  > this.s1 = "Valor 1"; //o valor inicial é
  >Valor 1
  > }
  >
  > public void alteraObjeto(Class1 c1) //esse método recebe uma classe
  >Class1 por referência
  > {
  > c1.s1 = "Valor 2"; //o valor é alterado para
  >Valor 2
  > }
  >}
  >--
  >package teste;
  >
  >public class Class2
  >{
  > public static void main(String [] args)
  > {
  > Class1 c1 = new Class1(); //aqui o valor é setado para Valor 1
  > Class1 c2 = new Class1();
  >
  > System.out.println(c1.s1); // Valor 1 é exibido
  > c2.alteraObjeto(c1); //aqui o objeto é alterado para
  >Valor 2, pois é passado por referência
  > System.out.println(c1.s1); // Valor 2 é exibido. A classe Class1
  >foi alterada por referência
  > }
  >}
  >
  >---------
  >- Original Message -
  >From: "Leonardo Hartleben Reinehr"
  >To:
  >Sent: Wednesday, May 21, 2003 4:13 PM
  >Subject: RES: [java-list] Pergunta for Dummies
  >
  >
  >
  >Olá,
  >
  > > Ainda acredito que quando a passagem for de objetos será por 
referência
  > > e não por valor...
  >
  >Em Java, parâmetros são sempre passados por valor, independente se o
  >parâmetro é um objeto ou um tipo primitivo. Faça o teste a seguir que 
você
  >vai comprovar isso:
  >
  >public class Teste {
  > public static void main(String[] args) {
  > String str = "Valor 1";
  > teste(str);
  > System.out.println(str);
  > }
  >
  > public static void teste(String s) {
  > s = "Valor 2";
  > }
  >}
  >
  >O texto que será impresso é "Valor 1".
  >
  >Veja em 
http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html,
  >no item "Pass by Value", que lá explica direitinho o que acontece na
  >passagem de parâmetros, e porque os casos que você colocou funcionam. 
Aqui
  >na lista mesmo, há algum tempo, essa dúvida apareceu e houve bastante
  >debate, dê uma olhada no histórico.
  >
  >Um abraço,
  >Leonardo
  >
  >-- 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]
  
>-
  >

--
  MSN Hotmail, o maior webmail do Brasil. Faça o seu agora. 
-- LISTA SOUJAVA  
http://www.soujava.org.br -

RE: [java-list] Pergunta for Dummies

2003-06-24 Thread José Fernandes Godoy Jr
Java não passa nada por referência como em Delphi, C++...

Não dá.

O Bruno está certo.

-Original Message-
From: Bruno Borges [mailto:[EMAIL PROTECTED]
Sent: segunda-feira, 16 de junho de 2003 16:08
To: [EMAIL PROTECTED]
Subject: Re: [java-list] Pergunta for Dummies


ai senhor do ceu... array eh um objeto...

o q vc entende por "por referencia" ??

eh qdo vc tem:

int i = 10;
muda(j);

muda(int j) {
  j = 15;
}

i continua sendo 10, certo? em pascal, se eu declarasse "var j: integer"
daih seria "por referencia"... daih o i iria mudar, certo?

agora faz o seguinte:

int[] i = {1, 2, 3};
muda(i);

muda(int[] j) {
  j = {101, 102, 103};
}

manda imprimir os valores de i, apos o metodo muda... e daih vc me diz se eh
passado por valor ou por referencia...

:)

PS: nao me leve a mau... estou com colica hoje... :(


- Original Message - 
From: Alan
To: [EMAIL PROTECTED]
Sent: Tuesday, June 10, 2003 6:05 PM
Subject: Re: [java-list] Pergunta for Dummies


Como por valor se o conteúdo do Array está sendo alterado...???

Preste atenção quando o array é criado no método main, ele é criado com os
seguintes valores:
[0,1,2].
E quando o System.out.println retorna o Array ele foi alterado para:
[0,1,99]...

...??? Por referência!!!
Alan.
- Original Message - 
From: leonardo bruno
To: [EMAIL PROTECTED]
Sent: Thursday, June 05, 2003 10:19 AM
Subject: Re: [java-list] Pergunta for Dummies


aqui vai um link que eu peguei no GUJ que mostra que a passagem é feita por
valor
http://www.geocities.com/mcglonec1978/javacert/javacert.htmlhttp://www.geocities.com/mcglonec1978/javacert/javacert.html

[]s
léo


>From: "Alan"
>Reply-To: [EMAIL PROTECTED]
>To:
>Subject: Re: [java-list] Pergunta for Dummies
>Date: Fri, 30 May 2003 00:02:05 -0300
>
>Olá,
>
>Objetos e Arrays são passados por referência.
>Ai vai um exemplo:
>--- 
>package teste;
>
>public class Class1
>{
> String s1;
> public Class1()
> {
> this.s1 = "Valor 1"; //o valor inicial é
>Valor 1
> }
>
> public void alteraObjeto(Class1 c1) //esse método recebe uma classe
>Class1 por referência
> {
> c1.s1 = "Valor 2"; //o valor é alterado para
>Valor 2
> }
>}
>-- 
>package teste;
>
>public class Class2
>{
> public static void main(String [] args)
> {
> Class1 c1 = new Class1(); //aqui o valor é setado para Valor 1
> Class1 c2 = new Class1();
>
> System.out.println(c1.s1); // Valor 1 é exibido
> c2.alteraObjeto(c1); //aqui o objeto é alterado para
>Valor 2, pois é passado por referência
> System.out.println(c1.s1); // Valor 2 é exibido. A classe Class1
>foi alterada por referência
> }
>}
>
>- 
>- Original Message - 
>From: "Leonardo Hartleben Reinehr"
>To:
>Sent: Wednesday, May 21, 2003 4:13 PM
>Subject: RES: [java-list] Pergunta for Dummies
>
>
>
>Olá,
>
> > Ainda acredito que quando a passagem for de objetos será por referência
> > e não por valor...
>
>Em Java, parâmetros são sempre passados por valor, independente se o
>parâmetro é um objeto ou um tipo primitivo. Faça o teste a seguir que você
>vai comprovar isso:
>
>public class Teste {
> public static void main(String[] args) {
> String str = "Valor 1";
> teste(str);
> System.out.println(str);
> }
>
> public static void teste(String s) {
> s = "Valor 2";
> }
>}
>
>O texto que será impresso é "Valor 1".
>
>Veja em http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html,
>no item "Pass by Value", que lá explica direitinho o que acontece na
>passagem de parâmetros, e porque os casos que você colocou funcionam. Aqui
>na lista mesmo, há algum tempo, essa dúvida apareceu e houve bastante
>debate, dê uma olhada no histórico.
>
>Um abraço,
>Leonardo
>
>-- 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: env

RE: [java-list] Pergunta for Dummies

2003-06-24 Thread Eder Ribeiro Ferreira
Galera o negócio é o seguinte:

A passagem é sempre por valor.

Tipos primitivos (int, float, double ...) são passados por valor, logo no
exemplo a seguir o valor de i não é modificado.

int i = 10;
muda(i);

void muda(int j) {
  j = 15;
}

Métodos que recebem objetos, recebem, na realidade, uma CÓPIA do endereço do
objeto, ou seja apenas o VALOR do endereço do objeto. Lembrando que em java
arrays são objetos, analizemos o código a seguir:

int[] i = {1, 2, 3};
muda(i);

void muda(int[] j) {
  j[0] = 101;
}

nesse caso o valor do array i foi modificado ( o elemento de indice 0 passou
de 1 para 101 ). Essa mudança ocorreu pq o parâmetro j contém uma cópia do
endereço de i, a partir dessa cópia foi possível acessar o objeto original e
modifica-lo. Vejamos outro exemplo:

int[] i = {1, 2, 3};
muda(i);

void muda(int[] j) {
  j = new int[] { 10, 20, 30 };
}

Nesse caso o array i não se modifica! Pois apenas a CÓPIA do endereço de i
foi modificada e não o endereço original de i.

Espero que tenha ficado claro, t+!

-Original Message-
From: Bruno Borges [mailto:[EMAIL PROTECTED]
Sent: segunda-feira, 16 de junho de 2003 16:08
To: [EMAIL PROTECTED]
Subject: Re: [java-list] Pergunta for Dummies


ai senhor do ceu... array eh um objeto...

o q vc entende por "por referencia" ??

eh qdo vc tem:

int i = 10;
muda(j);

muda(int j) {
  j = 15;
}

i continua sendo 10, certo? em pascal, se eu declarasse "var j: integer"
daih seria "por referencia"... daih o i iria mudar, certo?

agora faz o seguinte:

int[] i = {1, 2, 3};
muda(i);

muda(int[] j) {
  j = {101, 102, 103};
}

manda imprimir os valores de i, apos o metodo muda... e daih vc me diz se eh
passado por valor ou por referencia...

:)

PS: nao me leve a mau... estou com colica hoje... :(


- Original Message -
From: Alan
To: [EMAIL PROTECTED]
Sent: Tuesday, June 10, 2003 6:05 PM
Subject: Re: [java-list] Pergunta for Dummies


Como por valor se o conteúdo do Array está sendo alterado...???

Preste atenção quando o array é criado no método main, ele é criado com os
seguintes valores:
[0,1,2].
E quando o System.out.println retorna o Array ele foi alterado para:
[0,1,99]...

...??? Por referência!!!
Alan.
- Original Message -
From: leonardo bruno
To: [EMAIL PROTECTED]
Sent: Thursday, June 05, 2003 10:19 AM
Subject: Re: [java-list] Pergunta for Dummies


aqui vai um link que eu peguei no GUJ que mostra que a passagem é feita por
valor
http://www.geocities.com/mcglonec1978/javacert/javacert.htmlhttp://www.geoci
ties.com/mcglonec1978/javacert/javacert.html

[]s
léo


>From: "Alan"
>Reply-To: [EMAIL PROTECTED]
>To:
>Subject: Re: [java-list] Pergunta for Dummies
>Date: Fri, 30 May 2003 00:02:05 -0300
>
>Olá,
>
>Objetos e Arrays são passados por referência.
>Ai vai um exemplo:
>---
>package teste;
>
>public class Class1
>{
> String s1;
> public Class1()
> {
> this.s1 = "Valor 1"; //o valor inicial é
>Valor 1
> }
>
> public void alteraObjeto(Class1 c1) //esse método recebe uma classe
>Class1 por referência
> {
> c1.s1 = "Valor 2"; //o valor é alterado para
>Valor 2
> }
>}
>--
>package teste;
>
>public class Class2
>{
> public static void main(String [] args)
> {
> Class1 c1 = new Class1(); //aqui o valor é setado para Valor 1
> Class1 c2 = new Class1();
>
> System.out.println(c1.s1); // Valor 1 é exibido
> c2.alteraObjeto(c1); //aqui o objeto é alterado para
>Valor 2, pois é passado por referência
> System.out.println(c1.s1); // Valor 2 é exibido. A classe Class1
>foi alterada por referência
> }
>}
>
>-
>- Original Message -
>From: "Leonardo Hartleben Reinehr"
>To:
>Sent: Wednesday, May 21, 2003 4:13 PM
>Subject: RES: [java-list] Pergunta for Dummies
>
>
>
>Olá,
>
> > Ainda acredito que quando a passagem for de objetos será por referência
> > e não por valor...
>
>Em Java, parâmetros são sempre passados por valor, independente se o
>parâmetro é um objeto ou um tipo primitivo. Faça o teste a seguir que você
>vai comprovar isso:
>
>public class Teste {
> public static void main(String[] args) {
> String str = "Valor 1";
> teste(str);
> System.out.println(str);
> }
>
> public static void teste(String s) {
> s = "Valor 2";
> }
>}
>
>O texto que será impresso é "Valor 1".
>
>Veja em http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html,
>no item "Pass by Value", que lá explica direitinho o que acontece na
>passagem de parâmetros, e porque os casos que você colocou funcionam. Aqui
>na lista mesmo, há algum tempo, essa dúvida apareceu e houve bastante
&g

Re: [java-list] Pergunta for Dummies

2003-06-23 Thread Bruno Borges
ai senhor do ceu... array eh um objeto...

o q vc entende por "por referencia" ??

eh qdo vc tem:

int i = 10;
muda(j);

muda(int j) {
  j = 15;
}

i continua sendo 10, certo? em pascal, se eu declarasse "var j: integer"
daih seria "por referencia"... daih o i iria mudar, certo?

agora faz o seguinte:

int[] i = {1, 2, 3};
muda(i);

muda(int[] j) {
  j = {101, 102, 103};
}

manda imprimir os valores de i, apos o metodo muda... e daih vc me diz se eh
passado por valor ou por referencia...

:)

PS: nao me leve a mau... estou com colica hoje... :(


- Original Message - 
From: Alan
To: [EMAIL PROTECTED]
Sent: Tuesday, June 10, 2003 6:05 PM
Subject: Re: [java-list] Pergunta for Dummies


Como por valor se o conteúdo do Array está sendo alterado...???

Preste atenção quando o array é criado no método main, ele é criado com os
seguintes valores:
[0,1,2].
E quando o System.out.println retorna o Array ele foi alterado para:
[0,1,99]...

...??? Por referência!!!
Alan.
- Original Message - 
From: leonardo bruno
To: [EMAIL PROTECTED]
Sent: Thursday, June 05, 2003 10:19 AM
Subject: Re: [java-list] Pergunta for Dummies


aqui vai um link que eu peguei no GUJ que mostra que a passagem é feita por
valor
http://www.geocities.com/mcglonec1978/javacert/javacert.htmlhttp://www.geocities.com/mcglonec1978/javacert/javacert.html

[]s
léo


>From: "Alan"
>Reply-To: [EMAIL PROTECTED]
>To:
>Subject: Re: [java-list] Pergunta for Dummies
>Date: Fri, 30 May 2003 00:02:05 -0300
>
>Olá,
>
>Objetos e Arrays são passados por referência.
>Ai vai um exemplo:
>--- 
>package teste;
>
>public class Class1
>{
> String s1;
> public Class1()
> {
> this.s1 = "Valor 1"; //o valor inicial é
>Valor 1
> }
>
> public void alteraObjeto(Class1 c1) //esse método recebe uma classe
>Class1 por referência
> {
> c1.s1 = "Valor 2"; //o valor é alterado para
>Valor 2
> }
>}
>-- 
>package teste;
>
>public class Class2
>{
> public static void main(String [] args)
> {
> Class1 c1 = new Class1(); //aqui o valor é setado para Valor 1
> Class1 c2 = new Class1();
>
> System.out.println(c1.s1); // Valor 1 é exibido
> c2.alteraObjeto(c1); //aqui o objeto é alterado para
>Valor 2, pois é passado por referência
> System.out.println(c1.s1); // Valor 2 é exibido. A classe Class1
>foi alterada por referência
> }
>}
>
>- 
>- Original Message - 
>From: "Leonardo Hartleben Reinehr"
>To:
>Sent: Wednesday, May 21, 2003 4:13 PM
>Subject: RES: [java-list] Pergunta for Dummies
>
>
>
>Olá,
>
> > Ainda acredito que quando a passagem for de objetos será por referência
> > e não por valor...
>
>Em Java, parâmetros são sempre passados por valor, independente se o
>parâmetro é um objeto ou um tipo primitivo. Faça o teste a seguir que você
>vai comprovar isso:
>
>public class Teste {
> public static void main(String[] args) {
> String str = "Valor 1";
> teste(str);
> System.out.println(str);
> }
>
> public static void teste(String s) {
> s = "Valor 2";
> }
>}
>
>O texto que será impresso é "Valor 1".
>
>Veja em http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html,
>no item "Pass by Value", que lá explica direitinho o que acontece na
>passagem de parâmetros, e porque os casos que você colocou funcionam. Aqui
>na lista mesmo, há algum tempo, essa dúvida apareceu e houve bastante
>debate, dê uma olhada no histórico.
>
>Um abraço,
>Leonardo
>
>-- 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]
>- 
>



MSN Hotmail, o maior webmail do Brasil. Faça o seu
agora. -- LISTA
SOUJAVA  http://www.soujava.

Re: [java-list] Pergunta for Dummies

2003-06-20 Thread Volnei



Eh passado por valor sim!!!, mais como todo array é 
um objeto e todo objeto eh tratado por uma referencia oque é passado é uma cópia 
(valor) dessa referência, entendeu?

  - Original Message - 
  From: 
  Alan 
  
  To: [EMAIL PROTECTED] 
  Sent: Tuesday, June 10, 2003 6:05 
PM
  Subject: Re: [java-list] Pergunta for 
  Dummies
  
  Como por valor se o conteúdo do 
  Array está sendo alterado...???
   
  Preste atenção quando o array é 
  criado no método main, ele é criado com os seguintes 
  valores:
  [0,1,2].
  E quando o System.out.println 
  retorna o Array ele foi alterado para:
  [0,1,99]...
   
  ...??? Por referência!!!
  Alan.
  
- Original Message - 
From: 
leonardo 
bruno 
To: [EMAIL PROTECTED] 
Sent: Thursday, June 05, 2003 10:19 
AM
Subject: Re: [java-list] Pergunta for 
Dummies



aqui vai um link que eu peguei no GUJ que mostra que a passagem é feita 
por valor
http://www.geocities.com/mcglonec1978/javacert/javacert.htmlhttp://www.geocities.com/mcglonec1978/javacert/javacert.html
 
[]s
léo
>From: "Alan" <[EMAIL PROTECTED]>
>Reply-To: [EMAIL PROTECTED] 
>To: <[EMAIL PROTECTED]>
>Subject: Re: [java-list] Pergunta for Dummies 
>Date: Fri, 30 May 2003 00:02:05 -0300 
> 
>Olá, 
> 
>Objetos e Arrays são passados por referência. 
>Ai vai um exemplo: 
>--- 
>package teste; 
> 
>public class Class1 
>{ 
> String s1; 
> public Class1() 
> { 
> this.s1 = "Valor 1"; //o valor inicial é 
>Valor 1 
> } 
> 
> public void alteraObjeto(Class1 c1) //esse método recebe uma 
classe 
>Class1 por referência 
> { 
> c1.s1 = "Valor 2"; //o valor é alterado para 
>Valor 2 
> } 
>} 
>-- 
>package teste; 
> 
>public class Class2 
>{ 
> public static void main(String [] args) 
> { 
> Class1 c1 = new Class1(); //aqui o valor é setado para Valor 
1 
> Class1 c2 = new Class1(); 
> 
> System.out.println(c1.s1); // Valor 1 é exibido 
> c2.alteraObjeto(c1); //aqui o objeto é alterado para 
>Valor 2, pois é passado por referência 
> System.out.println(c1.s1); // Valor 2 é exibido. A classe 
Class1 
>foi alterada por referência 
> } 
>} 
> 
>- 
    >----- Original Message ----- 
>From: "Leonardo Hartleben Reinehr" <[EMAIL PROTECTED]>
>To: <[EMAIL PROTECTED]>
>Sent: Wednesday, May 21, 2003 4:13 PM 
>Subject: RES: [java-list] Pergunta for Dummies 
> 
> 
> 
>Olá, 
> 
> > Ainda acredito que quando a passagem for de objetos 
será por referência 
> > e não por valor... 
> 
>Em Java, parâmetros são sempre passados por valor, 
independente se o 
>parâmetro é um objeto ou um tipo primitivo. Faça o teste a 
seguir que você 
>vai comprovar isso: 
> 
>public class Teste { 
> public static void main(String[] args) { 
> String str = "Valor 1"; 
> teste(str); 
> System.out.println(str); 
> } 
> 
> public static void teste(String s) { 
> s = "Valor 2"; 
> } 
>} 
> 
>O texto que será impresso é "Valor 1". 
> 
>Veja em 
http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html, 
>no item "Pass by Value", que lá explica direitinho o que 
acontece na 
>passagem de parâmetros, e porque os casos que você colocou 
funcionam. Aqui 
>na lista mesmo, há algum tempo, essa dúvida apareceu e houve 
bastante 
>debate, dê uma olhada no histórico. 
> 
>Um abraço, 
>Leonardo 
> 
>-- 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.h

Re: [java-list] Pergunta for Dummies

2003-06-20 Thread Rodrigo



Não, é por valor... Veja bem, se fosse por 
referência, quando é chamado o new do array ele deveria alterar o de fora 
também, pois se é uma referência, ele está mexendo diretamente na posição de 
memória do objeto... No início eu tbm achava q era por referência, tanto é que 
estava defendo isso tbm... Mas com o exemplo do Leonardo fica bem claro que é 
por valor, além do mais, se vc pesquisar no site da sun (java.sun.com), nos 
tutoriais, se não me engano, lá encontrará uma seção dizendo que no java toda 
passagem é por valor...
Pelo que entendi através do exemplo do Leonardo, o 
valor passado é a posição na memória do objeto e por isso altera o de fora tbm. 
Mas se alteramos esta posição com o new, nada é replicado para fora e isso não 
deveria acontecer se fosse passagem por referência...
A minha idéia do funcionamento é mais ou menos a 
seguinte:
public class 
Class1 

{ 

   String s1; 

   public Class1() 

   { 

     this.s1 = "Valor 1"; //o valor inicial é 

 Valor 1 

   } 

 

   public void alteraObjeto(Class1 c1) 

   { 

     c1.s1 = "Valor 2"; 

   } 

} 
 
public class Class2 

{ 

   public static void main(String [] args) 

   { 

     Class1 c1 = new Class1(); 

     Class1 c2 = new Class1(); 

 

     System.out.println(c1.s1); 

     c2.alteraObjeto(c1); 

     System.out.println(c1.s1); 

   } 

} 
 
Quando crio a váriavel c1, ela se encontra, por exemplo na posição 1 da 
memória, e essa variável aponta para a posição 100 que é onde se encontra o 
objeto. Quando passo c1 para o método a posição de c1 dentro do método será 2 e 
não mais 1, entretanto a posição dois tbm apontara para 100, logo qquer 
alteração feita no método será vista por fora pois as duas variáveis apontam 
para o mesmo objeto. Entretanto, ao executar o new a posição que c1 (dentro do 
método) aponta deixará de ser 100. Se fosse por referência, a posição dos dois 
c1 seria a mesma e ao executar o new mudaria dentro e fora.
    Não sei se é assim que funciona internamente, mas foi o 
que eu abstrai do exemplo... Veja que na chamada existem as duas variáveis nos 
registros de ativação, elas apenas apontam para o mesmo local...
 
Espero ter sido claro no exemplo e espero ter ajudado.
 
Rodrigo
 

  - Original Message - 
  From: 
  Alan 
  
  To: [EMAIL PROTECTED] 
  Sent: Tuesday, June 10, 2003 6:05 
PM
  Subject: Re: [java-list] Pergunta for 
  Dummies
  
  Como por valor se o conteúdo do 
  Array está sendo alterado...???
   
  Preste atenção quando o array é 
  criado no método main, ele é criado com os seguintes 
  valores:
  [0,1,2].
  E quando o System.out.println 
  retorna o Array ele foi alterado para:
  [0,1,99]...
   
  ...??? Por referência!!!
  Alan.
  
- Original Message - 
From: 
leonardo 
bruno 
To: [EMAIL PROTECTED] 
Sent: Thursday, June 05, 2003 10:19 
AM
    Subject: Re: [java-list] Pergunta for 
Dummies



aqui vai um link que eu peguei no GUJ que mostra que a passagem é feita 
por valor
http://www.geocities.com/mcglonec1978/javacert/javacert.htmlhttp://www.geocities.com/mcglonec1978/javacert/javacert.html
 
[]s
léo
>From: "Alan" <[EMAIL PROTECTED]>
>Reply-To: [EMAIL PROTECTED] 
>To: <[EMAIL PROTECTED]>
>Subject: Re: [java-list] Pergunta for Dummies 
>Date: Fri, 30 May 2003 00:02:05 -0300 
> 
>Olá, 
> 
>Objetos e Arrays são passados por referência. 
>Ai vai um exemplo: 
>--- 
>package teste; 
> 
>public class Class1 
>{ 
> String s1; 
> public Class1() 
> { 
> this.s1 = "Valor 1"; //o valor inicial é 
>Valor 1 
> } 
> 
> public void alteraObjeto(Class1 c1) //esse método recebe uma 
classe 
>Class1 por referência 
> { 
> c1.s1 = "Valor 2"; //o valor é alterado para 
>Valor 2 
> } 
>} 
>-- 
>package teste; 
> 
>public class Class2 
>{ 
> public static void main(String [] args) 
> { 
> Class1 c1 = new Class1(); //aqui o valor é setado para Valor 
1 
> Class1 c2 = new Class1(); 
> 
> System.out.println(c1.s1); // Valor 1 é exibido 
> c2.alteraObjeto(c1); //aqui o objeto é alterado para 
>Valor 2, pois é passado por referência 
> System.out.println(c1.s1); // Valor 2 é exibido. A classe 
Class1 
>foi alterada por referência 
> } 
>} 
> 
>----- 
    >- Original Message - 
>From: "Leonardo Hartleben Reinehr" <[EMAIL PROTECTED]>
>To: <[EMAIL PROTECTED]>
>Sent: Wednesday, May 21, 2003 4:13 PM 
>Subject: RES: [java-list] Pergunta for Dumm

Re: [java-list] Pergunta for Dummies

2003-06-16 Thread Alan



Como por valor se o conteúdo do 
Array está sendo alterado...???
 
Preste atenção quando o array é 
criado no método main, ele é criado com os seguintes 
valores:
[0,1,2].
E quando o System.out.println 
retorna o Array ele foi alterado para:
[0,1,99]...
 
...??? Por referência!!!
Alan.

  - Original Message - 
  From: 
  leonardo 
  bruno 
  To: [EMAIL PROTECTED] 
  Sent: Thursday, June 05, 2003 10:19 
  AM
  Subject: Re: [java-list] Pergunta for 
  Dummies
  
  
  
  aqui vai um link que eu peguei no GUJ que mostra que a passagem é feita por 
  valor
  http://www.geocities.com/mcglonec1978/javacert/javacert.htmlhttp://www.geocities.com/mcglonec1978/javacert/javacert.html
   
  []s
  léo
  >From: "Alan" <[EMAIL PROTECTED]>
  >Reply-To: [EMAIL PROTECTED] 
  >To: <[EMAIL PROTECTED]>
  >Subject: Re: [java-list] Pergunta for Dummies 
  >Date: Fri, 30 May 2003 00:02:05 -0300 
  > 
  >Olá, 
  > 
  >Objetos e Arrays são passados por referência. 
  >Ai vai um exemplo: 
  >--- 
  >package teste; 
  > 
  >public class Class1 
  >{ 
  > String s1; 
  > public Class1() 
  > { 
  > this.s1 = "Valor 1"; //o valor inicial é 
  >Valor 1 
  > } 
  > 
  > public void alteraObjeto(Class1 c1) //esse método recebe uma 
  classe 
  >Class1 por referência 
  > { 
  > c1.s1 = "Valor 2"; //o valor é alterado para 
  >Valor 2 
  > } 
  >} 
  >-- 
  >package teste; 
  > 
  >public class Class2 
  >{ 
  > public static void main(String [] args) 
  > { 
  > Class1 c1 = new Class1(); //aqui o valor é setado para Valor 1 

  > Class1 c2 = new Class1(); 
  > 
  > System.out.println(c1.s1); // Valor 1 é exibido 
  > c2.alteraObjeto(c1); //aqui o objeto é alterado para 
  >Valor 2, pois é passado por referência 
  > System.out.println(c1.s1); // Valor 2 é exibido. A classe 
  Class1 
  >foi alterada por referência 
  > } 
  >} 
  > 
  >----- 
  >- Original Message - 
  >From: "Leonardo Hartleben Reinehr" <[EMAIL PROTECTED]>
  >To: <[EMAIL PROTECTED]>
  >Sent: Wednesday, May 21, 2003 4:13 PM 
  >Subject: RES: [java-list] Pergunta for Dummies 
  > 
  > 
  > 
  >Olá, 
  > 
  > > Ainda acredito que quando a passagem for de objetos será 
  por referência 
  > > e não por valor... 
  > 
  >Em Java, parâmetros são sempre passados por valor, independente 
  se o 
  >parâmetro é um objeto ou um tipo primitivo. Faça o teste a 
  seguir que você 
  >vai comprovar isso: 
  > 
  >public class Teste { 
  > public static void main(String[] args) { 
  > String str = "Valor 1"; 
  > teste(str); 
  > System.out.println(str); 
  > } 
  > 
  > public static void teste(String s) { 
  > s = "Valor 2"; 
  > } 
  >} 
  > 
  >O texto que será impresso é "Valor 1". 
  > 
  >Veja em 
  http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html, 
  >no item "Pass by Value", que lá explica direitinho o que 
  acontece na 
  >passagem de parâmetros, e porque os casos que você colocou 
  funcionam. Aqui 
  >na lista mesmo, há algum tempo, essa dúvida apareceu e houve 
  bastante 
  >debate, dê uma olhada no histórico. 
  > 
  >Um abraço, 
  >Leonardo 
  > 
  >-- 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] 
  >- 

  > 
  
  
  MSN Hotmail, o maior webmail do Brasil. Faça o seu agora. 
  -- 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] 
  - 



Re: [java-list] Pergunta for Dummies

2003-06-07 Thread leonardo bruno

aqui vai um link que eu peguei no GUJ que mostra que a passagem é feita por valor
http://www.geocities.com/mcglonec1978/javacert/javacert.htmlhttp://www.geocities.com/mcglonec1978/javacert/javacert.html
 
[]s
léo
>From: "Alan" <[EMAIL PROTECTED]>
>Reply-To: [EMAIL PROTECTED] 
>To: <[EMAIL PROTECTED]>
>Subject: Re: [java-list] Pergunta for Dummies 
>Date: Fri, 30 May 2003 00:02:05 -0300 
> 
>Olá, 
> 
>Objetos e Arrays são passados por referência. 
>Ai vai um exemplo: 
>--- 
>package teste; 
> 
>public class Class1 
>{ 
> String s1; 
> public Class1() 
> { 
> this.s1 = "Valor 1"; //o valor inicial é 
>Valor 1 
> } 
> 
> public void alteraObjeto(Class1 c1) //esse método recebe uma classe 
>Class1 por referência 
> { 
> c1.s1 = "Valor 2"; //o valor é alterado para 
>Valor 2 
> } 
>} 
>-- 
>package teste; 
> 
>public class Class2 
>{ 
> public static void main(String [] args) 
> { 
> Class1 c1 = new Class1(); //aqui o valor é setado para Valor 1 
> Class1 c2 = new Class1(); 
> 
> System.out.println(c1.s1); // Valor 1 é exibido 
> c2.alteraObjeto(c1); //aqui o objeto é alterado para 
>Valor 2, pois é passado por referência 
> System.out.println(c1.s1); // Valor 2 é exibido. A classe Class1 
>foi alterada por referência 
> } 
>} 
> 
>----- 
>----- Original Message - 
>From: "Leonardo Hartleben Reinehr" <[EMAIL PROTECTED]>
>To: <[EMAIL PROTECTED]>
>Sent: Wednesday, May 21, 2003 4:13 PM 
>Subject: RES: [java-list] Pergunta for Dummies 
> 
> 
> 
>Olá, 
> 
> > Ainda acredito que quando a passagem for de objetos será por referência 
> > e não por valor... 
> 
>Em Java, parâmetros são sempre passados por valor, independente se o 
>parâmetro é um objeto ou um tipo primitivo. Faça o teste a seguir que você 
>vai comprovar isso: 
> 
>public class Teste { 
> public static void main(String[] args) { 
> String str = "Valor 1"; 
> teste(str); 
> System.out.println(str); 
> } 
> 
> public static void teste(String s) { 
> s = "Valor 2"; 
> } 
>} 
> 
>O texto que será impresso é "Valor 1". 
> 
>Veja em http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html, 
>no item "Pass by Value", que lá explica direitinho o que acontece na 
>passagem de parâmetros, e porque os casos que você colocou funcionam. Aqui 
>na lista mesmo, há algum tempo, essa dúvida apareceu e houve bastante 
>debate, dê uma olhada no histórico. 
> 
>Um abraço, 
>Leonardo 
> 
>-- 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] 
>- 
> 
MSN Hotmail, o maior webmail do Brasil.  Faça o seu agora.  

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



Re: [java-list] Pergunta for Dummies

2003-06-04 Thread Daniel V. Gomes



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 - 
  From: 
  Paulo 
  Roberto Paro 
  To: [EMAIL PROTECTED] 
  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, umtrecho 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 chamadalbl. Esta referência é passada como 
  parâmetro, o que significa que uma cópiadela é passada para o método2. 
  Agora temos 2 referências apontando para o mesmoobjeto, o que significa 
  que ambas as chamadas setText irão modificar o mesmoobjeto. É importante 
  notar que a cópia aqui é entre as referências e não entreobjetos. Mais uma 
  vez a passagem de argumentos é por valor mas o valor nestecaso não é uma 
  grandeza numérica mas um endereço.Paulo 
  Paro.Fabio Eduardo Thomaz 
  <[EMAIL PROTECTED]> on 21/05/2003 16:57:24Please respond to 
  [EMAIL PROTECTED]To:   
  [EMAIL PROTECTED]cc:    (bcc: Paulo Roberto 
  Paro/Stefanini)Subject:  Re: [java-list] Pergunta for 
  Dummiesum exemplo simples de que a passagem de parametros não 
  é sempre porvalor é 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] );  
  }}//-[]'sFabio 
  Eduardo ThomazRodrigo 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 

Re: RES: [java-list] Pergunta for Dummies

2003-06-04 Thread Marcio Silva
Ólá,
  acho que qdo se fala a respeito de Java existe uma pequena divergencia 
.

  Digo isto pois fiz quando o curso na Sun e tive esta mesma duvida 
(duvida normal de quem ja desenvolveu em C#)..

  O que é dito em Java que tudo é passado por valor (by Value), significa 
que estamos passando sempre o valor de uma stack

  Qdo criamos instanciamos uma class ( Class v1 = new Class()), estamos 
alocando um espaço em memória e mais um pedacinho na chamada stack (local 
onde temos a variavel e o end. de memoria onde o objeto sera armazenado)

  Qdo criamos um tipo primitivo, o mesmo ficara somente na stack, ou seja, 
a variavel e seu valor serão alocados

  Logo quando dizemos que tudo é pass by value é por que estamos passando o 
valor da stack, ou seja, se  passamos um tipo primitivo, estaremos passando 
(By Value) o próprio valor e este não sofrerá alteração. mas qdo 
passamos um objeto por referencia estaremos passando ainda By Value, mas 
desta vez, não estaremos passando o conteudo do objeto e sim o valor da 
referencia deste objeto, ou seja, o endereco de memória onde o objeto esta 
localizado o que significa que as modificacoes refletirao no objeto 
passado (seria o equivalente a passar um parametro como ^p1, ou seja por 
referencia)

  Não sei se ficou confuso mas foi a forma que achei para tentar 
explicar

[ ]s



From: "Leonardo Hartleben Reinehr" <[EMAIL PROTECTED]>
Reply-To: [EMAIL PROTECTED]
To: <[EMAIL PROTECTED]>
Subject: RES: [java-list] Pergunta for Dummies
Date: Wed, 21 May 2003 16:13:19 -0300
Olá,

> Ainda acredito que quando a passagem for de objetos será por referência
> e não por valor...
Em Java, parâmetros são sempre passados por valor, independente se o 
parâmetro é um objeto ou um tipo primitivo. Faça o teste a seguir que você 
vai comprovar isso:

public class Teste {
public static void main(String[] args) {
String str = "Valor 1";
teste(str);
System.out.println(str);
}
public static void teste(String s) {
s = "Valor 2";
}
}
O texto que será impresso é "Valor 1".

Veja em http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html, 
no item "Pass by Value", que lá explica direitinho o que acontece na 
passagem de parâmetros, e porque os casos que você colocou funcionam. Aqui 
na lista mesmo, há algum tempo, essa dúvida apareceu e houve bastante 
debate, dê uma olhada no histórico.

Um abraço,
Leonardo
-- 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]
-
_
MSN Hotmail, o maior webmail do Brasil.  http://www.hotmail.com
-- 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] 
-



Re: [java-list] Pergunta for Dummies

2003-06-03 Thread rodklein
Ok, já entendi foi mal ter causado toda essa discussão, é que na verdade existe um 
trecho no livro Java como programar, que deixa essa situação meio em dúvida e por isso 
me fez chegar a esta conclusão...

Vallew pelo conhecimento


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

Re: [java-list] Pergunta for Dummies

2003-06-03 Thread leonardo bruno
Pedro ,
Em Java vc sempre passa  por valor, mas como essa passagem de valor é 
passada como uma copia  da - se a imprensao de que foi passada a referencia

[]s
léo

From: "Pedro Burglin" <[EMAIL PROTECTED]>
Reply-To: [EMAIL PROTECTED]
To: <[EMAIL PROTECTED]>
Subject: Re: [java-list] Pergunta for Dummies
Date: Wed, 28 May 2003 09:46:32 -0300
Passagem de parametros e sempre por referencia, tirando os casos de
tipos primitivos.
Pedro

- Original Message -
From: "eu ue" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, May 19, 2003 9:13 AM
Subject: Re: [java-list] Pergunta for Dummies
> Não creio que o fato de uma classe ser imutável ou não
> tenha algo a ver com a passagem ser por valor ou
> referência... No seu, exemplo: a passagem sendo por
> valor ou referência, o valor no objeto Integer não
> mudará nunca.
>
>  --- Alexandro Strack <[EMAIL PROTECTED]>
> escreveu: > 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 pe

Re: [java-list] Pergunta for Dummies

2003-06-02 Thread Daniel V. Gomes




onde eu escrevi por parâmetro por favor leiam "Por 
referência"
 
 

  - Original Message - 
  From: 
  Daniel 
  V. Gomes 
  To: [EMAIL PROTECTED] 
  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 - 
From: 
Paulo 
Roberto Paro 
To: [EMAIL PROTECTED] 
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, umtrecho 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 chamadalbl. Esta referência é passada 
como parâmetro, o que significa que uma cópiadela é passada para o 
método2. Agora temos 2 referências apontando para o mesmoobjeto, o que 
significa que ambas as chamadas setText irão modificar o mesmoobjeto. É 
importante notar que a cópia aqui é entre as referências e não 
entreobjetos. Mais uma vez a passagem de argumentos é por valor mas o 
valor nestecaso não é uma grandeza numérica mas um 
endereço.Paulo Paro.Fabio Eduardo 
Thomaz <[EMAIL PROTECTED]> on 21/05/2003 16:57:24Please 
respond to [EMAIL PROTECTED]To:   
[EMAIL PROTECTED]cc:    (bcc: Paulo Roberto 
Paro/Stefanini)Subject:  Re: [java-list] Pergunta for 
Dummiesum exemplo simples de que a passagem de parametros 
não é sempre porvalor é 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] 
);  
}}//-[]'sFabio 
Eduardo ThomazRodrigo 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


Re: [java-list] Pergunta for Dummies

2003-06-02 Thread Rui Fernando Hayashi
pen.getRGBColor(penColor);
System.out.println("red = " + penColor.red +
  
", green = " + penColor.green +
  
", blue = " + penColor.blue);
. . .
The modifications made to the
RGBColor object within the getRGBColor
method affect the object created in the calling sequence because the
names penColor (in the calling sequence) and aColor (in the getRGBColor
method) refer to the same object. 

At 16:57 21/5/2003 -0300, you wrote:
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 PROTECTE

Re: [java-list] Pergunta for Dummies

2003-06-02 Thread Alan
Olá,

Objetos e Arrays são passados por referência.
Ai vai um exemplo:
---
package teste;

public class Class1
{
String s1;
public Class1()
{
this.s1 = "Valor 1";  //o valor inicial é
Valor 1
}

public void alteraObjeto(Class1 c1)   //esse método recebe uma classe
Class1 por referência
{
c1.s1 = "Valor 2"; //o valor é alterado para
Valor 2
}
}
--
package teste;

public class Class2
{
public static void main(String [] args)
{
Class1 c1 = new Class1();   //aqui o valor é setado para Valor 1
Class1 c2 = new Class1();

System.out.println(c1.s1); // Valor 1 é exibido
c2.alteraObjeto(c1);//aqui o objeto é alterado para
Valor 2, pois é passado por referência
System.out.println(c1.s1);// Valor 2 é exibido. A classe Class1
foi alterada por referência
}
}

-
- Original Message -
From: "Leonardo Hartleben Reinehr" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, May 21, 2003 4:13 PM
Subject: RES: [java-list] Pergunta for Dummies



Olá,

> Ainda acredito que quando a passagem for de objetos será por referência
> e não por valor...

Em Java, parâmetros são sempre passados por valor, independente se o
parâmetro é um objeto ou um tipo primitivo. Faça o teste a seguir que você
vai comprovar isso:

public class Teste {
public static void main(String[] args) {
String str = "Valor 1";
teste(str);
System.out.println(str);
}

public static void teste(String s) {
s = "Valor 2";
}
}

O texto que será impresso é "Valor 1".

Veja em http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html,
no item "Pass by Value", que lá explica direitinho o que acontece na
passagem de parâmetros, e porque os casos que você colocou funcionam. Aqui
na lista mesmo, há algum tempo, essa dúvida apareceu e houve bastante
debate, dê uma olhada no histórico.

Um abraço,
Leonardo

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



Re: [java-list] Pergunta for Dummies

2003-06-02 Thread Binary Evolution
Objetos sao sempre passados por referencia no mesmo virtual machine!!!

O exemplo do StringBuffer embaixo prova isso. A variavel foi declarada,
alterada num outro metodo e o conteudo dele mudou no primeiro metodo. Se
fosse por valor uma copia do StringBuffer ia ser criada, alterada no
outro metodo, e no primeiro metodo o conteudo nao seria alterada.

Pois, tem objetos que funcionam diferentes. Passar um String por
referencia nao faz sentido por que nao e mutavel. Por exemplo, ao
concatenar um String com outro o primeiro nao e alterada, mais sim um
terceiro String e criado.

String str = "a";

str += "b"; // cria um String novo na memoria, use StringBuffer para
ganhar performance quando voce vai concatenar um String varias vezes.

-- 
==
Karl Silva Lovgren
Binary Evolution
Sao Paulo - Brazil
[EMAIL PROTECTED]
http://www.binaryevolution.hpg.com.br


On Wed, 2003-05-14 at 18:57, Alexandro Strack wrote:
> 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" ?
> > >
> > >

Re: RES: [java-list] Pergunta for Dummies

2003-05-31 Thread Paulo \"gangrel-br\" RC Siqueira
Caro Leonardo

  Você está parcialmente certo. Quando um método
recebe como parâmetro um objeto, o VALOR desse
parâmetro é uma REFERÊNCIA (é esse ponto que causa a
confusão ...). Isto está bem claro no link que você
mesmo passou. Porém, seu exemplo não é válido, pois é
possível SIM alterar atributos de objetos passados
para métodos.

  O que acontece no seu exemplo é que objetos da
classe String são imutáveis. Então, você tem um
referência a um objeto String no método main, e quando
chama o método "teste(str)" o que acontece é que a
variável local do método recebe uma nova referência a
um objeto String, quando você executa a linha 's =
"Valor 2";' (já que a String recebida não pode ser
alterada por ser IMUTÁVEL).

  No link que você passou há um exemplo com um objeto
não-imutável (quase no fim da página), que mostra a
passagem por valor de um referência funcionando como
deveria ;)

  Conclusão: Acredito que seja correto pensar que a
passagem de objetos para métodos ocorre por valor ou
por referência, dependendo apenas da interpretação de
cada um. O importante é entender que o que os métodos
recebem é uma REFERÊNCIA (ou VALOR do tipo REFERÊNCIA)
e não uma cópia do objeto original.

  Não sei se consegui ser claro, se não consegui me
fale que eu tento explicar melhor ;)


 --- Leonardo Hartleben Reinehr <[EMAIL PROTECTED]>
escreveu: > 
> Olá,
> 
> > Ainda acredito que quando a passagem for de
> objetos será por referência 
> > e não por valor...
> 
> Em Java, parâmetros são sempre passados por valor,
> independente se o parâmetro é um objeto ou um tipo
> primitivo. Faça o teste a seguir que você vai
> comprovar isso:
> 
> public class Teste {
> public static void main(String[] args) {
> String str = "Valor 1";
> teste(str);
> System.out.println(str);
> }
> 
> public static void teste(String s) {
> s = "Valor 2";
> }
> }
> 
> O texto que será impresso é "Valor 1".
> 
> Veja em
>
http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html,
> no item "Pass by Value", que lá explica direitinho o
> que acontece na passagem de parâmetros, e porque os
> casos que você colocou funcionam. Aqui na lista
> mesmo, há algum tempo, essa dúvida apareceu e houve
> bastante debate, dê uma olhada no histórico.
> 
> Um abraço,
> Leonardo
> 
> -- 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]
>
-
>  

=
_
Paulo "gangrel-br" R C Siqueira
Java Developer and Gamer :)
Mogi das Cruzes - SP - Brazil
Contato: (11) 9424-5474

___
Yahoo! Mail
Mais espaço, mais segurança e gratuito: caixa postal de 6MB, antivírus, proteção 
contra spam.
http://br.mail.yahoo.com/

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



Re: [java-list] Pergunta for Dummies

2003-05-30 Thread Pedro Burglin
Passagem de parametros e sempre por referencia, tirando os casos de
tipos primitivos.

Pedro

- Original Message - 
From: "eu ue" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, May 19, 2003 9:13 AM
Subject: Re: [java-list] Pergunta for Dummies


> Não creio que o fato de uma classe ser imutável ou não
> tenha algo a ver com a passagem ser por valor ou
> referência... No seu, exemplo: a passagem sendo por
> valor ou referência, o valor no objeto Integer não
> mudará nunca.
>
>  --- Alexandro Strack <[EMAIL PROTECTED]>
> escreveu: > 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 

Re: [java-list] Pergunta for Dummies

2003-05-30 Thread Paulo Roberto Paro



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

Re: [java-list] Pergunta for Dummies

2003-05-28 Thread Fabio Eduardo Thomaz




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

Re: [java-list] Pergunta for Dummies

2003-05-27 Thread eu ue
Não creio que o fato de uma classe ser imutável ou não
tenha algo a ver com a passagem ser por valor ou
referência... No seu, exemplo: a passagem sendo por
valor ou referência, o valor no objeto Integer não
mudará nunca.

 --- Alexandro Strack <[EMAIL PROTECTED]>
escreveu: > 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");
> > >   }
> > >  }
> > > }
> > >
> > >
> > >
> > >
> > >
> >
> >
>
---