Java函数中常用的参数传递方式有哪些?
发布时间:2023-06-12 06:12:46
Java函数中常见的参数传递方式有值传递和引用传递两种。
1. 值传递
值传递是指将参数值复制一份,然后将复制的值传递给函数,函数在执行过程中对参数值的修改不会影响到原来的值。
例如:
public class Test {
public static void main(String[] args) {
int a = 10;
changeNum(a);
System.out.println(a); // 输出结果为10
}
public static void changeNum(int num) {
num = 20;
}
}
在这个例子中,调用changeNum函数时传递的参数a的值被复制成了num的值,当在函数内部修改num的值时,不会影响到a的值,因此输出结果是10。
2. 引用传递
引用传递是指将参数的引用(地址)复制一份,然后将复制的引用传递给函数,函数在执行过程中通过引用访问参数的值,对参数进行修改会影响到原来的值。
例如:
public class Test {
public static void main(String[] args) {
int[] arr = {1, 2, 3};
changeArr(arr);
System.out.println(Arrays.toString(arr)); // 输出结果为[2, 4, 6]
}
public static void changeArr(int[] arr) {
for (int i = 0; i < arr.length; i++) {
arr[i] *= 2;
}
}
}
在这个例子中,数组arr被传递给changeArr函数时,复制了一份arr的引用,函数内部对arr的修改会影响到原来的数组,因此在调用完函数后输出的结果是[2, 4, 6]。
需要注意的是,Java中基本数据类型(如int、char等)都是属于值传递,而对象类型(如String、数组等)都是属于引用传递。同时,在Java8之前,Lambda表达式中使用的变量也是属于值传递,而在Java8之后,Lambda表达式可以使用引用传递的方式来访问外部变量。
