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

Java函数引用传递

发布时间:2023-07-04 17:08:47

Java中函数参数传递的方式有两种:值传递和引用传递。

1. 值传递:

在值传递中,实际参数的值被复制并传递给形式参数。在函数内部改变形式参数的值不会影响到实际参数的值。

例如:

public class ValuePassing {
    public static void main(String[] args) {
        int num = 10;
        System.out.println("Before calling changeValue() method, num is: " + num); // 输出:Before calling changeValue() method, num is: 10
        changeValue(num);
        System.out.println("After calling changeValue() method, num is: " + num); // 输出:After calling changeValue() method, num is: 10
    }

    public static void changeValue(int number) {
        number = 20; // 在函数内部改变形式参数的值
    }
}

上面的代码中,main()方法中的num变量被复制并传递给changeValue()方法中的number形式参数。在changeValue()方法内部修改number的值不会影响main()方法中的num的值。

2. 引用传递:

在引用传递中,实际参数的引用(内存地址)被复制并传递给形式参数,函数内部可以通过这个引用来修改实际参数的值。

例如:

public class ReferencePassing {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};
        System.out.println("Before calling changeValues() method, numbers[0] is: " + numbers[0]); // 输出:Before calling changeValues() method, numbers[0] is: 1
        changeValues(numbers);
        System.out.println("After calling changeValues() method, numbers[0] is: " + numbers[0]); // 输出:After calling changeValues() method, numbers[0] is: 10
    }

    public static void changeValues(int[] arr) {
        arr[0] = 10; // 通过形式参数修改数组的值
    }
}

上面的代码中,main()方法中的numbers数组被复制并传递给changeValues()方法中的arr形式参数。在changeValues()方法内部,通过形式参数arr可以修改实际参数numbers数组的值。

总结:

- 值传递是指方法调用时实际参数的值被复制给形式参数,并在函数内部修改形式参数的值不会影响到实际参数。

- 引用传递是指方法调用时实际参数的引用被复制给形式参数,可以通过形式参数修改实际参数所引用对象的值。