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。
本文深入探讨了值传递和地址传递两种参数传递方式的区别。通过具体的Java代码示例,展示了值传递下函数内部对参数的修改不会影响原始变量,而地址传递下,由于共享同一内存地址,函数内的修改会直接影响原始变量。
735

被折叠的 条评论
为什么被折叠?



