String [] args 和 String ... args区别

JDK 1.5后,新加入String ... args 写法,使得传入参数更加灵活方便 ,例子如下


public static void callMe1(String[] args) {  
	System.out.println(args.getClass() == String[].class); for(String s : args) { System.out.println(s); } }

 public static void callMe2(String... args) { System.out.println(args.getClass() == String[].class); for(String s : args) { System.out.println(s); } }

他们可以这样子被调用:

callMe1(new String[] {"a", "b", "c"});  
callMe2("a", "b", "c"); callMe2(new String[] {"a", "b", "c"});


但是不能 

callMe1("a", "b", "c");

这就是String... args定义方法的灵活之处。并且当一个方法定义中有String... args形参时,实参传递的参数个数可以是少于最大个数的任意个,可以不传 参数。

但是这样子定义在方便的同时也是要付出一定的代价的,那就是String...args只能定义在形参的最后一个参数,而String[] args就没有这样的限制了。

不过要声明的是:这种方法并不是官方推荐的方法,要尽量少用为妙,不然容易出现问题。


猜你喜欢

转载自www.cnblogs.com/liveinpresent/p/11627227.html