想知道10 0 20都是怎么来的,目前已知方法调用顺序
求详细解答,非常感谢
第一个10是因为another方法中创建的对象,这个对象的成员变量在初始化时被设置为了10,第二个0是因为在another方法中形参v被赋值为了0,第三个是因为在anthor方法中,对象v的成员变量被修改为20了。
测试如下:
参考链接:
class ValHold{
public int i = 10;
}
public class ObParm {
public static void main(String[] args) {
// TODO Auto-generated method stub
ObParm o = new ObParm(); // 创建ObParm类对象
o.amethod(); // 调用这个对象的amethod方法
}
public void amethod() {
int i=99;
ValHold v = new ValHold(); // 创建ValHold类对象v
v.i=30; // 将对象v的成员变量i的值修改为30
another(v,i); // 调用方法another(),传入对象v,和i
// 3、打印对象v的成员变量i的值
// 因为对象v的成员变量i的值在another()方法中被修改为20
// 所以这里打印它的值就是20
System.out.print(v.i);
}
// https://blog.csdn.net/qq_36761831/article/details/82817803
public void another(ValHold v ,int i) {
i=0; // 将形参变量i的值修改为0
v.i = 20; // 将对象v的成员变量i的值修改为20
ValHold vh = new ValHold(); // 创建ValHold类对象vh
v = vh; // 将形参v赋值为vh
// 1、打印对象v的成员变量i的值,因为v被赋值为vh,
//而对象vh创建时,其成员变量i被初始化为10
// 所以这里打印对象v的成员i的值,即打印对象vh的成员变量i的值,它的值为10
System.out.print(v.i);
// 2、打印形参i的值,因为形参i在此方法中被修改为0,
// 所以这里打印i的值为0
System.out.print(i);
}
}
秃顶程序员的不易,看到这里,点了关注吧!
点关注,不迷路,持续更新!!!