Qual será o resultado? E quando rodei não entendi porque a saída foi 77, pois o array a1 é usado como argumento no método adjust e seu retorno deveria ser atribuido a a2 apenas, alguém pode me explicar?
publicclassTestArray{publicstaticvoidmain(String[]args){TestArrayt=newTestArray();t.start();}voidstart(){long[]a1={1,2,3};long[]a2=adjust(a1);//é passado para o metodo adjust a referencia ao objeto array de a1, o metodo altera o objeto e devolve o mesmo, sendo assim a1 e a2 apontam para o mesmo objeto que foi alterado para {1,2,4}. System.out.print(a2[0]+a2[1]+a2[2]);System.out.println(a1[0]+a1[1]+a1[2]);// para provar if(a1==a2)System.out.println("Iguais");elseSystem.out.println("Não iguais");}long[]adjust(long[]a3){a3[2]=4;returna3;}}
Gianetti
Vc não esta passando uma cópia do valor e sim referencia a um objeto.
asousaj
fui editar e duplicou
:S
JavaDreams
crawler
te indico duas coisas que me ajudaram muito quando comecei a estudar java
1 - ler o livro Java Use a Cabeça sobre a parte que fala de objetos e referências
se não me engano são alguns capítulos perto do Capítulo 5
2 - Treinar o Debug do eclipse ou NetB. pois ajuda muito a entender e corrigir erros simples.