Java之可变参数(动态参数)详解(String...params)

例题:

计算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:

  1. 可变(动态)参数的实参为0-N个,可以为0(这也是为何上图代码先判断sums.length>0);
  2. 可变(动态)参数的本质就是数组;
  3. 可变(动态)参数的实参可以为数组; 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); }
  4. 可变(动态)参数可以和普通参数放一起,但可变参数必须放最后; pubilc void N(double d,String...params){ }
  5. 一个参数列表只能出现一个可变(动态)参数。
经验分享 程序员 微信小程序 职场和发展