困惑,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