可变参数
1.概念
可变参数(variable argument)允许你指定可以采用多个同类型参数的方法,而不需要事先确定参数的数目。
2.语法格式
可变参数语法:
public void foo(int … args){
}
3.注意事项:
1.调用可变参数的方法时, 编译器将自动创建一个数组保存传递给方法的可变参数,因此,程序员可以在方法体中以数组的形式访问可变参数public int sum(int ... nums){ int sum = 0; for (int i = 0; i < nums.length; i++) { sum += nums[i]; } return sum; }
2.在一个方法参数中只能使用一个省略号;且省略号必须出现在方法中参数列表的最后一个位置。//要把可变参数放到参数列表的后面 public int sum(String s,int ... nums){ //把可变参数当成数组 int sum = 0; for (int i = 0; i < nums.length; i++) { sum += nums[i]; } return sum; }
4.实例应用
4.1简单加法
public int sum(int a,int b){
return a+b;
}
public int sum(int a,int b,int c){
return a+b+c;
}
public int sum(int ... nums){
int sum = 0;
for (int i = 0; i < nums.length; i++) {
sum += nums[i];
}
return sum;
}
注意:可变参数其实就是把多个参数放入数组当中,我们在方法中获取参数就需要遍历数组来获取参数的值。
4.2 下面这种情况会调用哪个方法
//方法1
public void m1(String ...s1){
System.out.println("bbbbbb");
}
//方法2
public void m1(String s1,String s2){
System.out.println("aaaaaaa");
}
//测试:
public void test1(){
m1("a","b");
}
结果:输出aaaaaaa,因为方法2是完全匹配,优先级比方法1高4.3如果是这两种情况呢
//方法3:参数是数组
public int sum(int[] nums){
int sum = 0;
for (int i = 0; i < nums.length; i++) {
sum += nums[i];
}
return sum;
}
//方法2:参数是可变参
public int sum(String s,int ... nums){
int sum = 0;
for (int i = 0; i < nums.length; i++) {
sum += nums[i];
}
return sum;
}
注意:如果方法3和方法4放在一起会报错,两中写法只能选择一种,因为可变参的本质就是把多个参数放入数组中使用,从加法案例中可以看出。