当前位置:   article > 正文

方法的值传递机制练习

value v2= new value();

理解方法的值的传递的流程:

package com;

class value {
    int i = 15;
}

public class pass {
    public static void main(String[] args) {
        pass p=new pass();
        p.first();
    }

    public void first() {
        int i = 5;
        value v1 = new value();
        v1.i = 25;
        second(v1, i);
        System.out.println(v1.i);
    }

    public void second(value v2, int i) {
        i = 0;
        v2.i = 20;
        value val = new value();
        v2 = val;
        System.out.println(v2.i + " " + i);
    }
}

这里,当first方法调用second方法时,将v1的value方法的地址传递给了v2,而v2改变了v1所在的那个value方法的值,变成了20
当val重新调用的value的地址,value里面的数值还原,即int=15,然后将val调用的value的新的地址赋给了v2,所以值也就是15,(v2当改变完了v1所在的value堆空间的数值之后,就改变了指向的地址,变成了val的地址)
而这里面的int是存在于栈空间的,不是在value方法的堆空间里,所以调用了value对于i没有声明影响。
输出之后,释放了second所存的数值,但是v1所在的value方法的数值没有释放,所以输出的v1是v2所改变后的数值,即为20

转载于:https://www.cnblogs.com/KeepCalmAndNeverSayNever/p/10166001.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/940377
推荐阅读
相关标签
  

闽ICP备14008679号