什么是引用传递?
形参是实参的引用,两者相当于指向同一块内存空间的两个指针,值产生同步变化。
什么是值传递?
就像影分身。。==给形参分配新的内存空间,形参和实参实际上是两个个体。
仅仅把实参的值传给形参,形参参与运算,实参不参与运算。
但是有一点值得注意
当形参为引用数据类型时,虽不能改变实参的值(如一个数组首地址),但是能用形参改变这块内存空间所存储的数据值(如数组中的元素值)。
public class Example {
String str = new String("good");
char[] ch = { 'a', 'b', 'c' };
public static void main(String[] args) {
Example ex = new Example();
ex.change(ex.str, ex.ch);
System.out.print(ex.str + " and ");
System.out.print(ex.ch);
}
public void change(String str, char[] ch) {
str = "test ok";
ch[0] = 'g';
}
}
本题输出为:test ok and gbc
执行完ex.change(ex.str, ex.ch);后,实参ex.str和ex.ch的值(字符串数组首地址)都未改变
但是ch数组中的内容改变了,改变原因:
形参被赋值为ch数组的首地址,可以用形参访问数组元素,并修改元素值。