📅  最后修改于: 2023-12-03 15:37:36.231000             🧑  作者: Mango
在Java中,参数传递有两种方式:按值调用和按引用调用。这两种方式的区别在于参数在传递时是复制了值还是复制了引用。
按值调用指,在方法调用时,传递的参数是值的一个副本。也就是说,原始参数的值不会受到方法调用的影响。例如:
public static void main(String[] args) {
int num = 10;
test(num);
System.out.println(num); // 输出 10
}
public static void test(int n) {
n = n + 1;
}
在上面的示例中,main
方法中的 num
值为 10,调用 test
方法时,将 num
的值复制给 n
,test
方法中对 n
的更改不会影响 num
的值,所以最终输出的是 10。
按引用调用指,在方法调用时,传递的参数是一个引用的副本。也就是说,原始引用所指向的对象可以被方法调用所改变。例如:
public static void main(String[] args) {
int[] arr = new int[]{1, 2, 3};
test(arr);
System.out.println(Arrays.toString(arr)); // 输出 [2, 3, 4]
}
public static void test(int[] array) {
for (int i = 0; i < array.length; i++) {
array[i]++;
}
}
在上面的示例中,main
方法中的 arr
引用指向一个包含三个元素的数组。调用 test
方法时,将 arr
的值复制给 array
,test
方法中对 array
所指向的数组元素进行了更改,所以最终输出的是 [2, 3, 4]
。
按值调用:方法传入的参数是值的一个副本,原始参数不会受到方法调用的影响。
按引用调用:方法传入的参数是引用的一个副本,原始引用所指向的对象可以被方法调用所改变。