Alguém poderia me explicar porque o código abaixo não imprime “2”? Ao invés disso imprime “1”??
Main.java:
public class Main {
public static void main(String[] args){
Java1 j = new Java1();
j.run();
}
}
Java1.java:
public class Java1 {
int j[] = {2};
public void run(){
int i[] = {1};
change_i(i);
System.out.println(i[0]);
}
public void change_i(int[] i){
i = this.j;
}
}
Um gabarito de uma questão de java informava a resposta “1”. Eu fiquei um pouco desconfiado, afinal se todo array é um objeto (não importando se ele é de tipos primitivos ou não), logo o que foi passado como parâmetro na função change_i foi a referência do array (objeto) a qual seria apontada para um outro objeto, o j[], na linha 11. Fui pro eclipse e pra minha surpresa o gabarito estava certo. Engraçado que no debug, quando a referência de j é atribuída a variável i o identificador do objeto realmente troca, mas quando ele volta pro corpo da função main() o identificador volta pro inicial do nada!!??
Agradeço quem puder esclarecer.
Att,
Daniel Lima