Day34 可变参数

发布时间 2023-12-20 20:26:06作者: 白小帆

可变参数

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

  • 在方法声明中,在指定参数类型 后加一个省略号(...)。

  • 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。

    如:public void test(int x ,int...i){ //int...i即可变参数 普通参数int X要在它之前

    }

    (了解即可)

package com.baixiaofan.method;

public class Demo07 {
    public static void main(String[] args) {
        Demo07 demo07 = new Demo07();//没有用static的时候可以这么引用   直接输入new Demo07();点击小灯泡自动补充
        demo07.test(1,2,3,4,60);//在idea中实际显示的是demo07.test(...i:1,2,3,4,60);  
                                                             //这里的...i 是用在括号里面输入“  自动填充的
                                                          //复制代码过来这里就变了没有了...i
        
    }

    public void test(int...i){   //不知道参数inti有多少个      用int...i来表示可变参数   
        System.out.println(i[0]);//输出第零位i的值  结果为1
        System.out.println(i[1]);//结果为2
        System.out.println(i[2]);//结果为3
        System.out.println(i[3]);//结果为4
        System.out.println(i[4]);//结果为60

    }
}

结果为:

1
2
3
4
60

package com.baixiaofan.method;

public class Demo08 {
    public static void main(String[] args) {
        //调用可变参数的方法
        printMax(34,3,3,2,56.5);//实际上idea中显示的是  printMax(...numbers:34,3,3,2,56.5);
                                            //...numbers  在括号中用"  自动补充得到的
        printMax(new double[]{1,2,3});

    }

    public static void printMax(double...numbers){
        if (numbers.length==0){    //表示numbers没有长度  
            System.out.println("No argument passed");  //即没有传递参数
            return;
        }
        double result =numbers[0];

        //排序
        for (int i = 1; i < numbers.length; i++) {
            if (numbers[i]>result){
                result=numbers[i];
            }
        }
        System.out.println("The max value is" + result);
    }
}

结果为:

The max value is56.5
The max value is3.0