Java中函数参数的传递方式详解
发布时间:2023-06-22 05:23:45
在Java中,函数参数的传递方式有两种:按值传递和按引用传递。
1. 按值传递
按值传递是指在调用函数时将实参的值复制给形参,函数内部对形参的修改不会影响实参的值。换句话说,实参和形参是两个不同的存储单元。
示例代码:
public class Main {
public static void main(String[] args) {
int a = 10;
changeValue(a);
System.out.println(a);
}
public static void changeValue(int b) {
b = 20;
}
}
输出结果为10,说明函数changeValue对b的修改没有影响到a的值,因为a和b是两个不同的变量。
2. 按引用传递
按引用传递是指在调用函数时将实参的地址传递给形参,函数内部对形参的修改也会影响到实参。换句话说,实参和形参是同一存储单元的两个不同名称。
示例代码:
public class Main {
public static void main(String[] args) {
int[] arr = {1, 2, 3};
changeValue(arr);
for(int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
public static void changeValue(int[] b) {
b[0] = 10;
}
}
输出结果为10,2,3,说明函数changeValue对b的修改影响到了arr的值,因为arr和b引用的是同一个数组。
需要注意的是,虽然Java中支持按引用传递,但Java中的对象都是引用类型,因此函数的参数传递实际上传递的也是引用的值(也称为对象的地址)。因此,在Java中并没有真正意义上的按引用传递,而是按值传递的一种特殊情况。
总结:
按值传递和按引用传递是Java中参数传递的两种形式。按值传递将实参的值复制给形参,函数内部对形参的修改不会影响实参的值;按引用传递将实参的地址传递给形参,函数内部对形参的修改会影响实参的值。需要注意的是,Java中的对象都是引用类型,因此实际上函数的参数传递也是按值传递的一种特殊情况。
