可变参数
1、介绍
在JDK5中提供了可变参数,允许在调用方法是传入任意个参数。可变参数原理就是一个数组存在格式:
修饰符 返回值类型 方法名(数据类型...变量名){}
public int sum(int...num)//表示当前方法可以接受任意个int类型的数据
示例:
当我们想要一个计算两数之和的方法时我们可能会这样完成
public static int sum(int a, int b){
return a + b;
}
假若我们突然又想要一个求三数之和的方法呢?一样的做法,我们只需要添加一个参数即可
public static int sum(int a, int b, int c){
return a + b + c;
}
我们想一想这样做是不是有些冗余了呢,要是我们之后还需要其他多数之和的方法是不是要写很多个求和方法?当然不需要,在java中我们可以这样做
public static int sum(int...num){
int res = 0;
//因为可变参数本质上是一个数组,我们可以把它当作数组使用
for (int i : num) {
res += i;
}
// 也可以这样写
// for(int i = 0 ;i < num.length; i++){
// res += num[i];
// }
return res;
}
通过这个方法我们就可以计算多数之和了,不需要向上面那样进行多次方法重载。
2、可变参数注意细节
1、可变参数只能作为方法的最后一个参数,但其前面可以有或者没有任何参数。
2、可变参数本质上是数组,不能作为方法重载。如果同时出现相同类型的数组和可变参数的方法,是不能编译通过的。
3、可变参数使用
调用可变参数方法可以给出零到任意多个参数,编译器会将可变参数转换为一个数组,也可以直接传递一个数组。方法内部使用时直接当作数组使用即可。参考1中的示例代码
int x = sum(3, 4, 5, 6, 7, 10);
int y = sum();
System.out.println("x = " + x);
System.out.println("y = " + y);
结果
x = 35
y = 0