Java函数参数传递方式有哪些
发布时间:2023-05-20 10:15:23
Java函数参数传递有按值传递和按引用传递两种方式。
按值传递是指将参数的值复制一份,传递给函数,在函数内部对参数值的操作不会影响原始变量的值。这种方式通常用于传递基本数据类型的参数。例如:
public class Test {
public static void main(String[] args) {
int a = 5;
changeValue(a);
System.out.println(a); // 输出结果为5,未改变a的值
}
public static void changeValue(int num) {
num = 10; // 修改num的值
}
}
按引用传递是指将参数的引用复制一份,传递给函数,在函数内部对参数的操作会影响原始变量的值。这种方式通常用于传递对象类型的参数。例如:
public class Test {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("hello");
changeValue(sb);
System.out.println(sb.toString()); // 输出结果为world,修改了原来对象的值
}
public static void changeValue(StringBuilder str) {
str.append("world"); // 修改str的值
}
}
需要注意的是,在Java中,数组类型也是引用类型。因此,对数组类型的参数进行操作同样会影响原始数组的值。例如:
public class Test {
public static void main(String[] args) {
int[] arr = {1, 2, 3};
changeValue(arr);
System.out.println(Arrays.toString(arr)); // 输出结果为[2, 3, 4],修改了原来数组的值
}
public static void changeValue(int[] arr) {
for (int i = 0; i < arr.length; i++) {
arr[i] += 1; // 修改arr的值
}
}
}
除了按值传递和按引用传递,Java还有一种特殊的传递方式:可变参数传递。它允许函数接收任意个数的参数,并将这些参数打包为一个数组传递给函数。在函数内部操作数组的方法与操作普通数组一致。例如:
public class Test {
public static void main(String[] args) {
int sum = sum(1, 2, 3, 4, 5);
System.out.println(sum); // 输出结果为15
}
public static int sum(int... nums) {
int total = 0;
for (int num : nums) {
total += num;
}
return total;
}
}
总之,Java函数参数传递方式有按值传递、按引用传递和可变参数传递三种。不同的传递方式适用于不同的场景,需要根据实际情况进行选择。
