90.Java可变参数

可变参数

JDK中具有可变参数的类Arrays.asList()方法。

分别传多个参、传数组,传数组又传参的情况。

注意:传入基本数据类型数组的问题。

从JDK 5开始, Java 允许为方法定义长度可变的参数。

语法:数据类型…变量名。

可变长参数是Object[] 数组。(可变参数里存的是对象数组)

JDK中的典型应用:

     Arrays.asList(T…a)是jdk中的典型应用。

需求:对若干个整数进行求和

public static int sum1(int a,int b ) {
        return a+b;
    }

若干个整数求和如何解决?

可以使用数组接收整数。

public static int sum1(int[] numbers) {
        if (numbers == null) {
            return 0;
        }

        if (numbers.length == 0) {
            return 0;
        }

        int sum = 0;
        for (int num : numbers) {
            sum += num;
        }
        return sum;
    }

可以使用可变参数

public static int sum2(int... numbers) {
        if (numbers == null) {
            System.out.println("可变参数的值为null");
            return 0;
        }

        if (numbers.length == 0) {
            System.out.println("可变参数的值的长度为0");
            return 0;
        }

        int sum = 0;
        for (int num : numbers) {
            sum += num;
        }
        return sum;
    }

可变参数的使用

public static void main(String[] args) {
        // int result = sum1(new int[] { 1, 3, 5, 7, 9 });
        // System.out.println(result);

        // // 使用了可变参数,传一个数组进去
        // int result = sum2(new int[] { 1, 3, 5, 7, 9 });
        // System.out.println(result);

        // 使用了可变参数,不必声明数组,简化书写
        // int result = sum2(2, 4, 6, 8, 10);
        // int result = sum2(1);
        int result = sum2();
        System.out.println(result);
    }

可变参数的细节

声明:

      在一个方法中,最多只能有一个可变参数。

      可变参数只能放在参数列表的最后面。

   调用:

      当使用可变参数时,可以传0或多个参数。

      当使用可变参数时,也可以传一个数组进去,就表示多个参数。

   使用:

      在方法内部使用时,就是在使用一个数组。

      当调用时没有传参数时(传了0个),这时在方法内部的参数数组是有值的(不为null),但长度为0.

author@nohert
原文地址:https://www.cnblogs.com/gzgBlog/p/13624140.html