可变参数或者不定项参数

JDK 1.5开始,Java支持传递同类型的可变参数给同一个方法。

  • 在方法声明中,在指定参数类型后加一个省略号()。如:
//             参数类型+...
public void add (int... i){}
  • 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。如:
//            可以多个参数,但可变参数要放最后
public void add (int x, int... i){}

示例:

package com.zctou.method;

public class Demo05 {
    public static void main(String[] args) {
        //Java可变参数演示
        double d = printMax(10.1,20.3,10.2,-1.2,11.4);
        System.out.println(d);
        System.out.println("============");
        double d1 = printMax();
        System.out.println(d1);
    }
    
    //定义一个比较大小的方法,形参为可变参数
    public static double printMax(double... d) {
        double max = 0.0 ;
        //如果什么都没传给方法,打印信息并返回
        if(d.length == 0) {
            System.out.println("没有最大值,请输入有效数值~");
            return max ;
        }
        //有传入有效数值,开始比较
        for(double x : d){
            if(x > max) {
                max = x ;
            }
        }
        System.out.println("```");
        return max ;
    }
}

输出:

​```
20.3
============
没有最大值,请输入有效数值~
0.0
可以看到,不传参数时,方法直接满足if(d.length == 0)的条件,直接返回max=0.0,跳过了后面的for 循环和输出语句。