em um teste de certificação, vi a seguinte questão:
class Value{
public int i=15;
}
public class Test {
public static void main(String argv[]){
Test t = new Test();
t.first();
}
public void first(){
int i = 5;
Value v = new Value();
v.i = 25;
second(v,i);
System.out.println(v.i);
}
public void second(Value v,int i){
i = 0;
v.i = 20;
Value val = new Value();
v = val;
System.out.println(v.i + " " + i);
}
}
rodando esta aplicação, isto será impresso na tela:
15 0
20
o que eu não entendi, foi:
public void second(Value v,int i){
i = 0;
v.i = 20;
Value val = new Value();
v = val;
System.out.println(v.i + " " + i);
}
Seguindo a execução:
- i recebe 0;
- v.i = 20;
- val é uma instância de Value;
- v recebe val;
Então, neste momento, v.i é igual a 15, pois recebeu o valor de val. Mas pq quando a execução do método second() acaba e volta pro método first(), v.i volta a ser 20, e nao continua sendo 15?