Java 不定长参数用法

Note:不定长参数一定要放在形参的最后一个,类型相同。

 

Demo 清单:

public class Test
{
/**
* Note strs must be the last parameter
* @param strs
*/
public static void process(String...strs)
{
for(String str:strs)
{
System.out.println(str);
//Do what you want to do
}
}

public static void process(Iterable<? extends Object> strs)
{
for(Object str:strs)
{
System.out.println(str);
//Do what you want to do
}
}

public static void main(String[] args)
{
Test.process("one");
Test.process("one","two");
}

}


 深一步分析:

此部分转自:http://www.cnblogs.com/lovingprince/archive/2008/05/20/2166386.html

JAVA中可以使用不定参数,

例如 public void test(String ...args){...} 这里test方法可以传入参数的情况是:

1.不使用参数,如test()

2.使用一个或多个参数,如test("1"); test("1","2");

3.使用数组 test(new String[]{"1","2"});

在test方法内部,我们可以像使用数组的访问方式一样来访问参数args.如:args[i] 这样就有一个好处,在参数输入不定的情况下,使用这个方法非常简单。非常易于使用。

有几点需要注意的就是  

  我们见到的是不定参数,其实编译器编译之后它会将这个test(String ...args){...} 编译成为数组调用的方式test(String[] args){} ,这个过程是编译中就完成了的,我们程序编写过程中看不到这个实际的转换过程。  而我们调用这个test方法时,编译器同样会把参数转换成new String[]{""}的形式调用,所以,本质上来讲,就是一个以数组为参数的调用方法,我们看不到而已,具体详细情况可以反编译class类就可以明了。

如果同时同一个类中还有一个test方法,例如test(),或者test(String args) ,我们采用 test("1")的方式调用,我们就可以知道了,因为有这个方法存在,所以编译器就会优先使用这个 test(String args)    方法,而不会使用不定参数的方法,这个原因很明确,因为不定参数本质上是一个数组为参数的方式。所以,如果你定义了一个不定参数的test方法,如果你再定义一个test(String[] args)的以数组为参数的方法,编译器就会提示你方法定义重复。道理就在这里。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值