值传递
值传递是指在调用函数时将实际参数复制一份传递到函数中
并且在函数中对参数进行修改不会影响到实际参数
例如
public class Test {
public static void test(int y) {
y=0;
}
public static void main(String[] args) {
int x=100;
test(x);
System.out.println(x);
}
}
运行结果为:
100
可以证明,变量x首先赋初值100,在调用“test”方法时,参数x将其值100复制一份传递给方法“test”的参数y。由于x其本身的值并没有改变,因此输出结果仍为100。
引用传递
引用传递是指在调用函数时将实际的参数的地址传递到函数中
在函数中对参数进行的修改会影响到实际参数
例如
public class Test {
static void t(int [] a) {
a[0]=0;
}
public static void main(String[] args) {
int [] age = {100};
t(age);
System.out.println(age[0]);
}
}
运行结果为:
0
由于age是一个数组名,其存放的是内存中数值100的地址,而在引用方法“t”时,参数age将地址传递给方法“t”的参数a,故方法中对参数a的操作即为对内存中100的操作,故再次打印参数age存放地址所指向的数值时,结果变为0。