java 可变参数 是指参数的个数不确定,但是参数的类型确定,java把可变参数当做数组处理。此外,可变参数必须位于最后一项,只支持有一个可变参数。
可变参数只能出现在参数列表的最后;
… 位于变量类型和变量名之间,前后有无空格都可以;
调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中一数组的形式访问可变参数。
定义方法例子:
public void fun(int… arr) { }
方法fun()的参数类型为int…,其中“…”不是省略号,而是定义参数类型的方式。参数arr就是可变参数类型。你可以把上面代码理解为:public void fun(int[] arr),但要注意,只有在方法的形参中可以使用int…来代替int[]。
public int sum1(int[] arr) {
int sum = 0;
for(int i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum;
}
public int sum2(int... arr) {
int sum = 0;
for(int i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum;
}
如何调用包含可变形参的方法:
sum1()和sum2()两个方法的调用:
sum1(new int[]{1,2,3});
sum2(new int[]{1,2,3});
但是对于sum2还有另一种调用方式:
sum2();
sum2(1);
sum2(1,2);
sum2(1,2,3);
等同于:
sum2(new int[0]);
sum2(new int[] {1});
sum2(new int[] {1, 2});
sum2(new int[] {1, 2, 3});
这看起来好像是使用任意多个参数来调用sum2()方法,这就是调用带有可变参数方法的好处了。