可变参数【Varargs】相比数组参数,优势在哪里?

bigbro001 2009-01-07 11:02:08
貌似很多情况下,可变参数完全可以用数组参数取代,例如下面两个例子:

//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版本引入了可变参数,那么可变参数相比数组参数,优势到底在哪里呢?或者说,什么情况下,可变参数无法用数组参数替代?
...全文
404 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
meihuiyu 2009-01-08
  • 打赏
  • 举报
回复
可变长参数没有限定参数的个数
数组则是限定了个数
Dream_JavaWorld 2009-01-08
  • 打赏
  • 举报
回复
mark
hbwhwang 2009-01-08
  • 打赏
  • 举报
回复
没有太大的优势,只是可以少写个new []{} 而已
bigbro001 2009-01-07
  • 打赏
  • 举报
回复
貌似可变参数相比数组参数仅有的两个优点是:
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);
}
}
}
hbgzg3006 2009-01-07
  • 打赏
  • 举报
回复

变长的可以这样传参数,不只是以数组的形式传。
function(String ...args)
String s1,s2;
function(s1,s2);或function();
chenchuanfeng001 2009-01-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bigbro001 的回复:]
貌似可变参数相比数组参数仅有的两个优点是:
1.可以传0参数,例如2楼所说
2.可以减少定义数组的麻烦

楼上李晗前辈提到的方法重载方面的优势,可是,貌似使用数组参数时,不必重载也能达到同样的效果啊:
[/Quote]
放一个空数组里,就和传0参数一样。
yqj2065 2009-01-07
  • 打赏
  • 举报
回复
可变参数就是数组参数,不过加了一点点语法糖。
所以,“可变参数无法用数组参数替代” 是不可能的。

吃糖有好处,有坏处。有人没有尝到甜头,却吃尽苦头。
dracularking 2009-01-07
  • 打赏
  • 举报
回复
我是这样认为的
数组功能上几乎是等同的 但有一个缺点是可在方法内更改元素内容 用不可更改list会更好
这就像for each循环和原始for循环一样 只不过增加了使用上更多的选择余地和操作灵活性 =>便利
p.s.数组或列表也可以表示0参,用数组和列表本身就是实现了重载的目的

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧