运行结果应该是10,0,20
主函数中o.amethod();调用了amethod()方法,在amethod()方法中 another(v,i);调用了another函数
这里具体看一下another()函数中的内容
v.i = 20;//将传来的v 对象的i属性值赋为20
ValHold vh = new ValHold();//此处新创建了一个 VallHold对象
v = vh;//将 vh 赋值给v
然后是第一个输出语句 System.out.print(v.i); 这里等同于 System.out.print(vh.i);
打印的是 vh对象中 i属性的值,10
接着是第二个输入语句:System.out.print(i);
这里i之前没有对象调用,默认输出的是another函数中的局部变量i ,也就是0
然后执行amethod()中的 System.out.print( v.i );
此时v中的i属性已经在another中赋为20,因此打印最后一个输出值为20
|