1、可变参数列表作为参数,方法调用时可以传入0或多个参数,传入数组也可以。数组作为方法参数,方法调用时只能传入数组。
如:已知求和的方法:
public int sum(int... n){
int s = 0;//存放整数后
for(int n1:n){
s += n1;
}
}
如下的方法调用形式都是正确的:
ArgsDemo ad = new ArgsDemo();
int s = 0;
s = ad.sum();
s = ad.sum(1);
s = ad.sum(1,2);
int[] arr = {1,2,3,4,5};
s = ad.sum(arr);
System.out.println(s);
如果方法参数变为数组,如下所示:
public int sum(int[] arr){
int s = 0;//存放整数后
for(int n1:arr){
s += n1;
}
return s;
}
那么可以看到,除了数组作为参数,其他三个方法调用都会报错
ArgsDemo ad = new ArgsDemo();
int s = 0;
s = ad.sum();//报错
s = ad.sum(1);//报错
s = ad.sum(1,2);//报错
int[] arr = {1,2,3,4,5};
s = ad.sum(arr);
System.out.println(s);
2、可变参数列表作为方法参数时,如果有多个参数,可变参数列表只能放到最后一个位置,而且不能有多个可变参数列表作为方法参数。而数组没有这个限制。
关于可变参数列表作为方法参数,下面的方法定义形式都是错误的:
public void method(int... m,int... n){}//布恩那个有多个可变参数作为方法参数
public void method(int... m,int n){}//可变参数应该放到参数列表的最后
3、可变参数的底层实现就是数组
4、当传入方法的参数数量不确定的时候,可以考虑使用可变参数列表。