【Java方法笔记】3-4 可变参数

§3-4 可变参数

有时候,对于同样的方法,若所选参数不定,用枚举方法重写方法(方法重载)会大幅增加代码量,使得这一过程变得枯燥繁琐。在 Java 5 中提供了可变参数,允许在调用方法时传入同类型不定长度的参数。本节将介绍 Java 中的可变参数。

3-4.1 介绍:可变参数

从 JDK 1.5 开始,Java 支持向一个方法传递同类型的可变参数。欲引入可变参数,只需在方法声明中,在指定参数类型后加上省略号...,例如:

(int... nums)
(double... reals)

可变参数大大减少了因参数个数不同导致的方法重写的代码量,减少冗余工作,提高开发效率。

下面将从几个例子出发,理解可变参数。

3-4.2 例子

我们先来定义一个含有可变参数的空方法:

public class Demo04 {
    public static void main(String[] args) {
        Demo04 demo04 = new Demo04();
        demo04.empty();
    }
    public void empty(double... nums) {
        System.out.println(nums);
    }
}

编译后运行,如图所示:

image

此时,我们向其传入参数:

public class Demo04 {
    public static void main(String[] args) {
        Demo04 demo04 = new Demo04();
        demo04.empty(1.0,2.5,3.14,2.333,10492,10086);
    }
    public void empty(double... nums) {
        System.out.println(nums[0]);
        System.out.println(nums[1]);
        System.out.println(nums[2]);
        System.out.println(nums[3]);
        System.out.println(nums[4]);
        System.out.println(nums[5]);
    }
}

编译后运行,结果如图:

image

鉴于以上所知,我们可以:

遍历数组并输出

public class Demo04 {
    public static void main(String[] args) {
        Demo04 demo04 = new Demo04();
        demo04.printNums(1.0,2.5,3.14,2.333,10492,10086);
    }
    public void printNums(double... nums) {
        if (nums.length == 0) {
            System.out.println("No data received. ");
            return;
        }

        for (int num = 0; num < nums.length; num++) {
            System.out.println("Number " + (num + 1) + " is " + nums[num]);
        }
    }
}

编译后运行,结果如图:

image

数组中输出最大值 / 最小值

public class Demo04 {
    public static void main(String[] args) {
        Demo04 demo04 = new Demo04();
        demo04.printNums(1.0,2.5,3.14,2.333,10492,10086);
        demo04.printMax(1.0,2.5,3.14,2.333,10492,10086);
    }
    public void printNums(double... nums) {
        if (nums.length == 0) {
            System.out.println("No data received. ");
            return;
        }

        for (int num = 0; num < nums.length; num++) {
            System.out.println("Number " + (num + 1) + " is " + nums[num]);
        }
    }
    public void printMax(double... nums) {
        if (nums.length == 0) {
            System.out.println("No data received. ");
            return;
        }
        double result = nums[0];

        for (int i = 1; i < nums.length; i++) {
            if (nums[i] > result) {
                result = nums[i];
            }
        }
        System.out.println("The maximum value is " + result);
    }
}

编译后运行,得结果:

image

3-4.3 注意事项与细节

  1. 可变参数的实参可以为 0 个至任意多个;
  2. 可变参数的实参可以为数组;
  3. 可变参数的本质就是数组;
  4. 可变参数与普通参数一起作为形参时,可变参数必须位于最后;
  5. 一个方法最多只能有一个可变参数。
posted @ 2021-08-07 18:31  Zebt  阅读(76)  评论(0)    收藏  举报