class ValHold{
public int i = 10;
}
public class ObParm{
public void amethod(){
ValHold v = new ValHold();
another(v);
System.out.println(v.i);
}
public void another(ValHold v){
v.i = 20;
ValHold vh = new ValHold();
v =vh;
System.out.println(v.i);
}
public static void main(String[] argv){
ObParm o = new ObParm();
o.amethod();
}
}此题的答案是10,20,为什么不是10,10呢?
public int i = 10;
}
public class ObParm{
public void amethod(){
ValHold v = new ValHold();
another(v);
System.out.println(v.i);
}
public void another(ValHold v){
v.i = 20;
ValHold vh = new ValHold();
v =vh;
System.out.println(v.i);
}
public static void main(String[] argv){
ObParm o = new ObParm();
o.amethod();
}
}此题的答案是10,20,为什么不是10,10呢?
public int i = 10;
}
public class ObParm{
public void amethod(){
ValHold v = new ValHold();
another(v);
System.out.println(v.i);//输出被修改的属性20
}
public void another(ValHold v){//v指向传递过来的对象(实参)
v.i = 20;//修改实参对象的属性
ValHold vh = new ValHold();
v =vh;//v指向新定义的对象
System.out.println(v.i);//输出默认值10
}
public static void main(String[] argv){
ObParm o = new ObParm();
o.amethod();
}
v.i = 20;
ValHold vh = new ValHold();
v =vh;
System.out.println(v.i);
}
由于another方法传递的是个对象,所以一旦改变了对象的类成员值,就改变了对象内部的值。
ValHold vh = new ValHold();
v =vh;
此次在引用时,返回的就是改变后的值。
ValHold v = new ValHold();与
ValHold vh = new ValHold();v =vh;
中的v分别是两个不同的对象嘛?
我总觉得应该输出是10,10,因为两次v都是指向一个new VaHold()嘛?
v.i = 20;//如果你那样理解的话,那这里修改的数据又谁的呢?
ValHold vh = new ValHold();
v =vh;
System.out.println(v.i);
}
可惜我没有分给了,不好意思哈。
下次多给你送分啊?