class ValHold{
public int i = 10;
}
public class ObParm{
public static void main(String argv[]){
ObParm o = new ObParm();
o.amethod();
}
public void amethod(){
int i = 99;
ValHold v = new ValHold();
v.i=30;
another(v,i);
System.out.println(v.i);
}//End of amethod
public void another(ValHold v, int i){
i=0;
v.i = 20;
ValHold vh = new ValHold();
v = vh;
System.out.println(v.i+ " "+i);
}//End of another
}
看这段代码,刚开始以为输出的是10,0, 10。因为java对对象的应用类似指针。看到是10,0,20;.经过查资料,发现原来v = vh;之后,v已经指向另外的指针,我在这句后面加了v.i = 10;发现结果还是10,0,20。这是因为这样改变的是vh指向的那个对象,真正的ValHold对象没有被改变,而前面的v.i = 20;改变的是真正的ValHold对象。
看来对java的了解还不是很到位啊,继续努力
本文通过一个具体的Java代码示例,详细解释了Java中对象作为方法参数时的内存分配及引用变化过程。揭示了对象参数传递的特点,并通过实验验证了对象内部状态与对象引用的区别。

1133

被折叠的 条评论
为什么被折叠?



