amethod()中v(假设他指向的对象是A)和another中的v是两个不同的引用,虽然名称相同。
public void another(ValHold v, int i){
i=0;
//这时候两个V指向同一个对象A
v.i = 200;//A.i的值被修改为200
ValHold vh = new ValHold();//假设vh指向的对象是B
v = vh;//内部的v不在指向A而指向B
System.out.println(v.i+ " "+i);//B.i的值当然是10,i的值当然是0,但是A.i的值还是前面的200,所以最后一个结果当然还是200
}//End of another
public void another(ValHold v, int i){
i=0;
//这时候两个V指向同一个对象A
v.i = 200;//A.i的值被修改为200
ValHold vh = new ValHold();//假设vh指向的对象是B
v = vh;//内部的v不在指向A而指向B
System.out.println(v.i+ " "+i);//B.i的值当然是10,i的值当然是0,但是A.i的值还是前面的200,所以最后一个结果当然还是200
}//End of another
v.i=30;//在此处该对象的实际值为30;
another(v,i);//此过此函数的操作后,对家的实际值为函数操作后的值;
System.out.println(v.i);public void another(ValHold v, int i){
v.i = 200;//函数在这里将值入的对象的值做修改,此后该对象的值均为修改过后的值.
}//End of another