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