Java中的值传递问题
Java中的值传递问题
参考网址地址
https://blog.csdn.net/bjweimengshu/article/details/79799485
值传递 & 引用传递的定义
值传递(pass by value)
是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。
引用传递(pass by reference)
是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
自己的总结
总结一句,Java中传递的是引用,但不是引用传递,是值传递(拷贝后)传递的引用,所以之后方法中虽然是指向了堆中对象的地址,但是由于是值传递导致在改方法中改变该对象的引用不能影响主方法中的引用地址。
Java中巧妙的使用值传递传递引用达到了伪引用传递的效果,这样做与引用传递的区别就是如果在子方法中改变形参的引用地址,父方法不会改变。
public static void main(String[] args) {
ParamTest pt = new ParamTest();
String name = "Hollis";
pt.pass(name);
System.out.println("print in main , name is " + name);
}
public void pass(String name) {
name = "hollischuang";
System.out.println("print in pass , name is " + name);
}
上面的代码输出结果为
print in pass , name is hollischuang
print in main , name is Hollis