Java中的变量参数(可变参数)

作者: Arvin Chen 分类: Java 来源: Break易站(www.breakyizhan.com)
  •   Java 方法

    Java中的变量参数(可变参数)

    在JDK 5中,Java包含了一个功能,可以简化创建需要可变数量参数的方法。这个特性被称为可变长度参数,它是可变长度参数的简写形式。采用可变数量参数的方法是可变参数方法。
    在JDK 5之前,可以通过两种方式处理可变长度参数。一个使用重载方法(每个一个),另一个将参数放入数组中,然后将该数组传递给方法。他们都有潜在的错误倾向,需要更多的代码。可变参数功能提供更简单,更好的选项。

    可变参数的语法:
    可变长度自变量由三个句点(...)指定。例如,

    public static void fun(int ... a) 
    {
       //方法体
    }

    该语法告诉编译器fun()可以用零个或多个参数来调用。因此,这里隐式地声明了一个int []类型的数组。以下是用于说明上述概念的代码片段:

    // Java program to demonstrate varargs
    class Test1
    {
        // A method that takes variable number of intger
        // arguments.
        static void fun(int ...a)
        {
            System.out.println("Number of arguments: " + a.length);
    
            // using for each loop to display contents of a
            for (int i: a)
                System.out.print(i + " ");
            System.out.println();
        }
    
        // Driver code
        public static void main(String args[])
        {
            // Calling the varargs method with different number
            // of parameters
            fun(100);         // one parameter
            fun(1, 2, 3, 4);  // four parameters
            fun();            // no parameter
        }
    }
    

    输出:

    Number of arguments: 1
    100 
    Number of arguments: 4
    1 2 3 4 
    Number of arguments: 0

    上述代码的解释:

    • ...语法告诉编译器可变参数已被使用,并且这些参数应该存储在由a引用的数组中。
    • 变量a作为数组运行。在这种情况下,我们已经将int的数据类型定义为int。所以它只能使用整数值。可以使用a.length找到参数的数量,这是我们在Java中找到数组长度的方式。

    注意:一个方法也可以有其他参数的可变长度参数,但是应该确保只有一个varargs参数应该在方法声明的参数列表中最后写入。

     int nums(int a,float b,double ... c)

    在这种情况下,前两个参数与前两个参数匹配,其余参数属于c。

    // Java program to demonstrate varargs with normal
    // arguments
    class Test2
    {
        // Takes string as a argument followed by varargs
        static void fun2(String str, int ...a)
        {
            System.out.println("String: " + str);
            System.out.println("Number of arguments is: "+ a.length);
    
            // using for each loop to display contents of a
            for (int i: a)
                System.out.print(i + " ");
    
            System.out.println();
        }
    
        public static void main(String args[])
        {
            // Calling fun2() with different parameter
            fun2("GeeksforGeeks", 100, 200);
            fun2("CSPortal", 1, 2, 3, 4, 5);
            fun2("forGeeks");
        }
    }
    
    String: GeeksforGeeks
    Number of arguments is: 2
    100 200 
    String: CSportal
    Number of arguments is: 5
    1 2 3 4 5 
    String: forGeeks
    Number of arguments is: 0

    重要的一点:

    • Vararg方法也可以重载,但重载可能会导致模糊。
    • 在JDK 5之前,变长参数可以通过两种方式处理:一种使用重载,另一种使用数组参数。
    • 方法中只能有一个变量参数。
    • 变量参数(可变参数)必须是最后一个参数。

    错误的可变参数例子

    • 用单一方法指定两个可变参数:
      void method(String ... gfg,int ... q)
      {
          //编译时间错误,因为有两个
          //可变参数
      }
      
    • 将可变参数指定为方法的第一个参数而不是最后一个参数:
      void method(int ... gfg,String q)
      {
          //出现变量时编译时间错误
          //在正常参数之前
      }
  •   Java 方法
  •   本文标题:Java中的变量参数(可变参数) - Break易站
    转载请保留页面地址:https://www.breakyizhan.com/java/4130.html
      微信返利机器人
      免费:淘宝,京东,拼多多优惠券
      腾讯,爱奇艺,优酷的VIP视频免费解析,免费看
      即刻扫描二维码,添加微信机器人!

    发表笔记

    电子邮件地址不会被公开。 必填项已用*标注