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数组的值。
总结:
- 值传递是指方法调用时实际参数的值被复制给形式参数,并在函数内部修改形式参数的值不会影响到实际参数。
- 引用传递是指方法调用时实际参数的引用被复制给形式参数,可以通过形式参数修改实际参数所引用对象的值。
