貌似很多情况下,可变参数完全可以用数组参数取代,例如下面两个例子://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版本引入了可变参数,那么可变参数相比数组参数,优势到底在哪里呢?或者说,什么情况下,可变参数无法用数组参数替代?
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版本引入了可变参数,那么可变参数相比数组参数,优势到底在哪里呢?或者说,什么情况下,可变参数无法用数组参数替代?
变长的可以这样传参数,不只是以数组的形式传。
function(String ...args)
String s1,s2;
function(s1,s2);或function();
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);
}
}
}
数组功能上几乎是等同的 但有一个缺点是可在方法内更改元素内容 用不可更改list会更好
这就像for each循环和原始for循环一样 只不过增加了使用上更多的选择余地和操作灵活性 =>便利
p.s.数组或列表也可以表示0参,用数组和列表本身就是实现了重载的目的