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