写出下列程序的运行结果

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 后返回函数调用点
    }

results matching ""

    No results matching ""