java 可变参数
Java可变参数
Java中可以允许将同功能, 同名称的参数个数不同的方法合并为一个方法, 就是可变参数方法.
可变参数大大提高了代码的复用性, 通过灵活运用可变参数,我们可以让代码更加简洁、高效,减少冗余。个人感觉这个性质很有趣
简单示例
public class Main {
public static void main(String[] args) {
VarParameter varParameter = new VarParameter();
System.out.println(varParameter.getSum(1, 2, 3));
}
}
class VarParameter {
public int getSum(int... numbers) {
System.out.println("参数个数为: " + numbers.length);
int res = 0;
for (int i = 0; i < numbers.length; i++) {
res += numbers[i];
}
return res;
}
}
可以发现, 传入的number可以被当作数组使用
一些特点:
- 可变参数的实参可以为0个或者任意多个
- 可变参数的实参可以是一个数组
- 可变参数可以和普通参数一起放在形参列表, 但是必须保证可变参数在最后, 且一个形参列表只能出现一个可变参数
public int getSum(String str, int... numbers) {
System.out.println("参数个数为: " + numbers.length);
int res = 0;
for (int i = 0; i < numbers.length; i++) {
res += numbers[i];
}
return res;
}
本质
深入解析一下java编译器, 就可以发现, 其实java编译器会将可变参数转化为数组, 所以其实可以将其理解为
int getSum(int... numbers) {
}
=>
int getSum(int[] numbers = new int[] {...}} {
}
所以我们也可以知道如果我们传入一个数组也是可以编译通过的
public class Main {
public static void main(String[] args) {
VarParameter varParameter = new VarParameter();
System.out.println(varParameter.getSum(1, 2, 3));
int[] arr = new int[] {1, 2, 4};
varParameter.getSum(arr);
}
}
class VarParameter {
public int getSum(int... number) {
System.out.println("参数个数为: " + number.length);
int res = 0;
for (int i = 0; i < number.length; i++) {
res += number[i];
}
return res;
}
}

浙公网安备 33010602011771号