Re: [java-list] Pergunta for Dummies
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
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
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
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
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
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
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
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
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: [java-list] Pergunta for Dummies
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
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
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
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
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
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: [java-list] Pergunta for Dummies
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
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
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
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"); > > > } > > > } > > > } > > > > > > > > > > > > > > > > > > > > ---