写出下列程序的运行结果
class Value {
public int i = 15;
}
public class Test119 {
public static void main(String argv[]) {
Test10 t = new Test10();
t.first();
}
public void first() {
int i = 5;
Value v = new Value();
v.i = 25;
second(v, 5);
System.out.println(v.i);
}
public void second(Value v, int i) {
i = 0;
v.i = 20;
Value val = new Value();
v = val;
System.out.println(v.i + " " + i);
}
}
参考解答
输出结果为:
15 0
20
分析如下1~10
public static void main(String argv[]) {
Test10 t = new Test10();
t.first(); //1、调用first
}
public void first() {
int i = 5;
Value v = new Value(); //2、创建了第一个Value对象 v
v.i = 25; //3、 对象v的属性i值修改为25
second(v, 5); //4、调用second函数,参数1为对象v,参数2为整数类型数据5
System.out.println(v.i); //10、此时的v.i = 20,输出 20
}
public void second(Value v, int i) {
i = 0; //5、i的值修改为0
v.i = 20; //6、对象v的属性i值修改为20
Value val = new Value(); //7、创建了一个新的Value对象 val
v = val; //8、对象v的引用修改为val的地址,注意此时v的作用范围只在本方法内部
System.out.println(v.i + " " + i); //9、此时的v.i = val.i = 15 ,i = 0,输出15 0 后返回函数调用点
}