欢迎访问宙启技术站
智能推送

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中的对象都是引用类型,因此实际上函数的参数传递也是按值传递的一种特殊情况。