例题:
计算2个数的和、3个数的和、4个数的和...N个数的和
如果使用传统方法我们发现是枯燥且繁琐的
public class VariableParameters {
//传统方法
public void sum1(int n1,int n2){//计算2个数的和
int n = n1+n2;
}
public void sum2(int n1,int n2,int n3){//计算3个数的和
int n = n1+n2+n3;
}
public void sum3(int n1,int n2,int n3,int n4){//计算4个数的和
int n = n1+n2+n3+n4;
}
}
接下来我们使用动态参数的方法
public class VariableParameters {
public int sum(int...sums){//此时形参列表里传入的变为数组
int rst = 0;
if(sums.length>0){//判断是否有参数传入
rst=sums[0];
for (int i = 1; i < sums.length; i++) {//遍历求和
rst+=sums[i];
}
}
return rst;
}
}
//测试上述代码
public static void main(String[] args) {
VariableParameters vp = new VariableParameters();
System.out.println("和为"+vp.sum(1,2,3));
System.out.println("和为"+vp.sum(1,2,8));
}
int...sums(sums为自定义)即为可变参数/动态参数
details:
- 可变(动态)参数的实参为0-N个,可以为0(这也是为何上图代码先判断sums.length>0);
- 可变(动态)参数的本质就是数组;
- 可变(动态)参数的实参可以为数组;
public class VariableParameters { public void T(int...t1){ System.out.println(t1.length); //输出数组长度,确认是否传入数组,如果数组可传入,长度应为3 } public static void main(String[] args) {//传入数组n VariableParameters vp = new VariableParameters(); int[] n = new int[3]; n[0]=1; n[1]=2; n[2]=3; vp.T(n); }
-
可变(动态)参数可以和普通参数放一起,但可变参数必须放最后;
pubilc void N(double d,String...params){ }
-
一个参数列表只能出现一个可变(动态)参数。