编程语言
首页 > 编程语言> > 困惑,java是否在传递对象引用时使用按值调用或按引用调用?

困惑,java是否在传递对象引用时使用按值调用或按引用调用?

作者:互联网

参见英文答案 > Is Java “pass-by-reference” or “pass-by-value”?                                    82个

public class program1{

    public static void main(String args[]){

        java.util.Vector vc=new java.util.Vector();

        vc.add("111");
        vc.add("222");

        functioncall(vc);

        vc.add("333");

        System.out.println(vc);

    }

    public static void functioncall(java.util.Vector vc){     

        vc=null;    

    }
}

上述程序的输出为[111,222,333].但是,当我运行以下程序时,输出为[333].当我们传递引用时会感到困惑,无论是按值调用还是按引用调用,它是如何工作的?为什么

public class program1{

    public static void main(String args[]){

        java.util.Vector vc=new java.util.Vector();

        vc.add("111");
        vc.add("222");

        functioncall(vc);

        vc.add("333");

        System.out.println(vc);

    }

    public static void functioncall(java.util.Vector vc){

        vc.removeAllElements();  

    }
}

解决方法:

它传递了引用的值.

为了无耻地窃取我刚才看到的类比,想象你使用的每个标识符都是一张纸,上面写着地址.地址指向一所房子.

您可以更改房屋(例如,通过向向量添加对象或清除它),但您仍然持有相同的纸张,地址仍然会将您带到同一个房子.

如果将向量设置为null,那么您所做的就是擦除地址.

This article更详细地解释了它.

标签:java,pass-by-reference,pass-by-value
来源: https://codeday.me/bug/20191005/1855459.html