1、值传递(pass by value)是指在调用函数时将实际参数复制 一份传递到函数中,这样在函数中如果对 参数 进行修改,将不会影响到实际参数。
public static void main(String[] args) {
int a = 10 ;
test(a);
System.out.println("a"+a);
}
public static void test(int y){
y = 0 ;
System.out.println("y"+y);
}
此时输出结果为:
y0;
a10;
可以看出此时只是讲a的值传递给了test方法,而没有改变a的值,仍为10。
2、地址传递是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对 参数 所进行的修改,将影响到实际参数。
public static void main(String[] args) {
int [] array = new int[]{10};
System.out.println(array[0]);
System.out.println("========");
test(array);
System.out.println(array[0]);
}
public static void test(int [] y){
y[0] = 0;
}
此时输出结果为:
可以看出原来的数值已经被改变了,如果我们直接对array进行输出,此时输出的是地址值,而如果对前面代码中的a进行直接输出则为10。也就是说在第二个程序里,调用方法的时候将array的地址值传递给test方法,两者共用一个地址值,此时执行方法中的 y[0] = 0; 即将此地址值存放的数据变为0,此事再次进行输出array[0],很明显就是0。