Obrigado a todos que me responderam! Valeu pela forca, valeu mesmo !!! -- Mensagem original --
>O que acontece � que quando passamos por parametro em Java uma vari�vel de >um tipo primitivo, o java passa apenas uma c�pia do valor da vari�vel para >o >m�todo, a� quando voce altera o valor da vari�vel dentro do m�todo, voce >est� alterando apenas uma c�pia local que n�o ir� se refletir para fora do >m�todo. J� quando voce passa um objeto, e um vetor em ultima instancia >tambem � um objeto, voc� na verdade passa uma c�pia da referencia em mem�ria >daquele objeto, portanto quando voce altera o "valor" do objeto dentro de >um >m�todo, voce est� mandando o conteudo daquela referencia em mem�ria mudar, >o >que no fim das contas e para efeitos praticos � o mesmo que passar o >parametro por referencia, ou seja, o valor � refletido externamente, quando >o m�todo encerrar. >No exemplo que voce passou, quando o m�todo change_i em 1 acaba, o mesmo >� >desempilhado e o i interno morre junto sendo que o i externo n�o enxerga >as >mudan�as, enquanto no 2, as mudan�as s�o efetivas, mesmo quando o m�todo >acaba. > >Eliade Filho > >-----Mensagem original----- >De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] >Enviada em: quarta-feira, 8 de janeiro de 2003 09:12 >Para: [EMAIL PROTECTED] >Assunto: [cejug-discussao] Language Fundamentals > > >Como os dois programs abaixo, basicamente o mesmo, retorna valores >diferentes >? >Desculpem-me a inocencia !!! > >1) Este programa retorna 1. Aqui tudo bem, mas veja o 2) >public class example { > int i = 0; > public static void main(String args[]) { > int i = 1; > change_i(i); > System.out.println(i); > } > public static void change_i(int i) { > i = 2; > i *= 2; > } >} > >2) Este programa retorna 4 ? >public class example { > int i[] = {0}; > public static void main(String args[]) { > int i[] = {1}; > change_i(i); > System.out.println(i[0]); > } > public static void change_i(int i[]) { > i[0] = 2; > i[0] *= 2; > } >} > > > >------------------------------------------------------------------------------------------- >Ceara' Java User Group > > Para cancelar sua assinatura, envie um e-mail para: [EMAIL PROTECTED] > Para mais informacoes, mande um e-mail para: [EMAIL PROTECTED] > Falar com o administrador? e-mail para: [EMAIL PROTECTED] > > > ------------------------------------------ Use o melhor sistema de busca da Internet Radar UOL - http://www.radaruol.com.br ------------------------------------------------------------------------------------------- Ceara' Java User Group Para cancelar sua assinatura, envie um e-mail para: [EMAIL PROTECTED] Para mais informacoes, mande um e-mail para: [EMAIL PROTECTED] Falar com o administrador? e-mail para: [EMAIL PROTECTED]
