Java传值的基本问题

来源:互联网 发布:vegas软件图标 编辑:程序博客网 时间:2024/06/07 00:44
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 amethodpublic 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的了解还不是很到位啊,继续努力