zoukankan      html  css  js  c++  java
  • Java 之 可变参数

    可变参数

      JDK1.5之后,如果我们定义一个方法需要接受多个参数,并且多个参数类型一致,我们可以对其简化成如下格式:

    修饰符 返回值类型 方法名(参数类型... 形参名){  }
    

      其实这个书写完全等价于

    修饰符 返回值类型 方法名(参数类型[] 形参名){  }
    

      后面的这种定义,在调用时必须传递数组,而前者可以直接传递数据即可。

    JDK1.5 以后。出现了简化操作。... 用在参数上,称之为可变参数。

      同样是代表数组,但是在调用这个带有可变参数的方法时,不用创建数组(这就是简单之处),直接将数组中的元素作为实际参数进行传递,其实编译成的class文件,将这些元素先封装到一个数组中,在进行传递。这些动作都在编译.class文件时,自动完成了。

       Demo:

     1 public class ChangeArgs {
     2     public static void main(String[] args) {
     3         int[] arr = { 1, 4, 62, 431, 2 };
     4         int sum = getSum(arr);
     5         System.out.println(sum);
     6         //  6  7  2 12 2121
     7         // 求 这几个元素和 6  7  2 12 2121
     8         int sum2 = getSum(6, 7, 2, 12, 2121);
     9         System.out.println(sum2);
    10     }
    11 
    12     /*
    13      * 完成数组  所有元素的求和 原始写法
    14      
    15       public static int getSum(int[] arr){
    16         int sum = 0;
    17         for(int a : arr){
    18             sum += a;
    19         }
    20         
    21         return sum;
    22       }
    23     */
    24     //可变参数写法
    25     public static int getSum(int... arr) {
    26         int sum = 0;
    27         for (int a : arr) {
    28             sum += a;
    29         }
    30         return sum;
    31     }
    32 }
    View Code

     Tips:上述add方法在同一个类中,只能存在一个。因为会发生调用的不确定性

    注意事项:

      1. 使用前提:当方法的参数列表数据类型已经确定,但是参数的个数不确定,就可以使用可变参数

      2. 使用格式:定义方法时使用  修饰符 返回值类型 方法名(数据类型...变量名){}

      3.可变参数的原理可变参数底层就是一个数组,根据传递参数个数不同,会创建不同长度的数组,来存储这些参数传递的参数个数,可以是0个(不传递),1,2...多个

      4. 一个方法的参数列表,只能有一个可变参数

      5. 如果方法的参数有多个,那么可变参数必须写在参数列表的末尾

    可变参数的特殊(终极)写法

      public static void method(Object...obj){
    
        }
    

      

  • 相关阅读:
    Python学习——列表
    第04组 Alpha冲刺(3/6)
    第04组 Alpha冲刺(2/6)
    第04组 Alpha冲刺(1/6)
    第04组 团队Git现场编程实战
    第04组 团队项目-需求分析报告
    团队项目-选题报告
    第二次结对编程作业
    第4组 团队展示
    第一次结对编程作业
  • 原文地址:https://www.cnblogs.com/niujifei/p/11439903.html
Copyright © 2011-2022 走看看