Olá companheiros,
Estava aqui estudando e me deparei com um problema que não consigo entender.
public class TesteObjetos {
protected int numero;
/**
*
*/
public TesteObjetos() {
numero = 1;
}
/**
* @param args
*/
public static void main(String[] args) {
TesteObjetos t1 = new TesteObjetos();
TesteObjetos t2 = new TesteObjetos();
t1.alteraValor(t1);
System.out.println(t1.numero); //saida é 2
t2.trocaReferencia(t2);
System.out.println(t2.numero); //saida é 1
}
public void trocaReferencia(TesteObjetos t) {
t = new TesteObjetos();
t.numero = 2;
}
public void alteraValor(TesteObjetos t) {
t.numero = 2;
}
}
dado o código acima, porque que quando eu dentro do método trocaReferencia troco a referência de t, ele ignora minhas alterações?
Sei que java sempre passa Objetos como referência, portanto, nao deveria referenciar o novo objeto?
Porém o que acontece é que ele simplesmente mantém o 1 objeto…
SUPONHO que isso seja porque o objeto foi criado dentro do método, então seu escopo é só dentro do método e ele se perde quando o metodo termina. é isso?
alguma luz?
grato desde já por qualquer ajuda 