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]
