1 /* 2 形参个数可变的方法: 3 */ 4 public class Varargs 5 { 6 //定义了形参个数可变的方法。 7 public static void test(int a,String... books) 8 { 9 //books被当成数组处理。 10 for(String tmp:books) 11 { 12 System.out.println(tmp); 13 } 14 System.out.println(a); 15 } 16 public static void main(String[] args) 17 { 18 //调用test方法。 19 test(5,"疯狂Java讲义","轻量级Java EE 企业应用实践"); 20 } 21 } 22 /* 23 执行上面的程序输出: 24 ------------------------------ 25 疯狂Java讲义 26 轻量级Java EE 企业应用实践 27 5 28 ------------------------------ 29 30 从test()的方法体代码来看,形参个数可变的参数本质就是一个数组参数,也就是说,下面两个方法签名的效果完全一样。 31 32 (1)//以可变个数参数来定义方法 33 public static void test(int a,String... books); 34 (2)//下面采用形参数组来定义方法 35 public static void test(int a,String[] args); 36 这两种形式都包含了一个名为books的形参,在两个方法的方法体内都可以把books当成数组来 37 处理,但区别是调用两个方法时存在差别,对于以可变形参的形式定义的方法,调用方法时更加简洁, 38 如下面代码所示: 39 40 test(5,"疯狂Java讲义","轻量级Java EE企业应用实践"); 41 传给books参数实参值无须是一个数组,但如果采用数组形参来声明方法,调用时则必须传给该形参一个数组,如下所示: 42 43 //调用test()方法时传入一个数组 44 test(5,new String[]{"疯狂Java讲义","轻量级Java EE企业应用实践"}); 45 46 注意:数组形式的形参可以处于形参列表的任意位置,单个数可变的形参只能处于形参列表的最后,也就是说; 47 一个方法中最多只能有一个个数可变的形参。 48 */