貌似很多情况下,可变参数完全可以用数组参数取代,例如下面两个例子://main方法中使用String数组参数
class HelloWorld1
{
  public static void main(String[] args)
  {
    System.out.println("Hello World!");
  }
}//main方法中使用String可变参数
class HelloWorld2
{
  public static void main(String... args)
  {
    System.out.println("Hello World!");
  }
}既然新的JDK版本引入了可变参数,那么可变参数相比数组参数,优势到底在哪里呢?或者说,什么情况下,可变参数无法用数组参数替代?

解决方案 »

  1.   


    变长的可以这样传参数,不只是以数组的形式传。
    function(String ...args)
    String s1,s2;
    function(s1,s2);或function();
      

  2.   

    貌似可变参数相比数组参数仅有的两个优点是:
    1.可以传0参数,例如2楼所说
    2.可以减少定义数组的麻烦楼上李晗前辈提到的方法重载方面的优势,可是,貌似使用数组参数时,不必重载也能达到同样的效果啊:class Test
    {
      public static void main(String[] args)
      {
        String[] str1 = {"a"};
        String[] str2 = {"a", "b"};
        write(str1);
        write(str2);  
      }
      
      public static void write(String... strs)
      //此处参数若改为String[] strs,效果完全一样,并没有重载方法
      //唯一区别貌似是:使用String...时,可以直接传参数"a", "b",省去上面定义数组的麻烦
      {
        for (String str: strs)
        {
          System.out.println(str);
        }
      }
    }
      

  3.   

    我是这样认为的
    数组功能上几乎是等同的 但有一个缺点是可在方法内更改元素内容 用不可更改list会更好
    这就像for each循环和原始for循环一样 只不过增加了使用上更多的选择余地和操作灵活性 =>便利
    p.s.数组或列表也可以表示0参,用数组和列表本身就是实现了重载的目的
      

  4.   

    没有太大的优势,只是可以少写个new []{} 而已