zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    任何时候都适用的20个C++技巧
    C++ 解析Json——jsoncpp(转)
    C++标准库和标准模板库(转)
    string标准C++中的的用法总结(转)
    JOIN US | 京东智联云诚聘技术精英
    在线公开课 | 云原生下的DevOps与持续交付
    AI端侧落地,京东AI技术如何部署边缘?
    CVPR 2020 | 京东AI研究院对视觉与语言的思考:从自洽、交互到共生
    IOT、AI、云计算等融合技术推进制造业产业转型
    边缘计算2.0时代,“云边缘”与“边缘云”你分清了吗?
  • 原文地址:https://www.cnblogs.com/gzgBlog/p/13624140.html
Copyright © 2011-2022 走看看