• 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
  • 相关阅读:
    信道、模拟信道、数字信道、基带信号、宽带信号的概念
    数据、信息、信号与码元的概念
    如何少些重复代码?
    编程中阶段性测试的重要性
    Python 字典的初始化,字典参数引用传递等问题
    什么是操作系统内核?有什么意义?
    什么是系统调用?系统调用的执行过程是什么?
    鼠标右键新建 Typora 文件
    如何快速高效的学习一门新技术
    字符串处理
  • 原文地址:https://www.cnblogs.com/gzgBlog/p/13624140.html
Copyright © 2020-2023  润新知