Em Java, a passagem de parâmetros sempre é feita por valor.
Mas quando vc passa um objeto (matriz se encaixa nesta categoria)
é passado uma referência a esse objeto.
Então:

String[] nomes = new String[2];
nomes[0] = "Douglas";
nomes[1] = "Drummond";

mudaNome1(nomes);
System.out.println(nomes[0]); // Imprime Disquete

mudaNome2(nomes);
System.out.println(nomes[1]); // Ainda imprime Drummond

void mudaNome1(String[] n) {
    n[0] = "Disquete";
}

void mudaNome2(String[] n) {
    n = new String[2];
    n[0] = "Teste";
    n[1] = "Teste2";
}


Por quê? Como é passada a referência ao objeto, em mudaNome1, n e nomes
apontam para o mesmo objeto, então ao alterar n[0] realmente estamos
alterando nomes[0]. Mas a passagem é feita por valor, então se tentarmos
alterar a referência (fazer o objeto apontar para outro lugar), a referência
de n e nomes serão diferentes (ao fazer n = new String[2], n aponta para uma
nova área de memória, enquanto nomes ainda aponta para o endereço antigo)

    Espero ter ajudado um pouco, esse assunto é um pouco confuso,

        Douglas Drummond


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

Responder a