您的位置:首页 > 编程语言 > Java开发

关于java中的参数传递问题

2016-11-21 14:16 549 查看

java中的参数传递方式只有值传递一种。

1.关于基本类型的值传递
系统会复制一份实际参数值传入,所以对形参的操作不会影响实际的参数。

2.关于引用类型的值传递
系统会复制该引用变量,并通过值传递传入实参中所存的地址,使两个引用变量同时指向该对象。
由于堆内存中只有一份该对象,所以不论任一引用变量对其进行操作,都是对该对象操作。
所以会造成传入的是引用变量本身的错觉,实际上传入的是其复制品,通过值传递使其也指向了堆中的该对象。


下来看一个题:

class V{
public int i=15;
}
public class Test {
public static void main(String[] args){
Test t=new Test();
t.first();
}

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

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


问题是该代码的输出结果.



该图可以清晰的解释输出结果为15 0 20
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java