public static void main(String[] args) { t1(); t1("a", "b", "c"); } private static void t1(String... strs) { System.out.println(strs.getClass()); System.out.println(strs.length); for (String str : strs) System.out.println(str); }
输出结果以下数组
class [Ljava.lang.String; 0 class [Ljava.lang.String; 3 a b c
事实上,String...表明的是String类型的数组,鼠标放到str的时候eclipse就会提示。eclipse
不定参数感受就是用了一个装饰器,jdk先将参数组装成一个数组,而后再执行方法体中的内容,由于即便调用时无参,但执行时是有参的。code
须要注意到的是blog
不定参数只能写到参数列表的后面ip
若是存在去掉不定参数后签名相同的重载方法,看起来好像均可以调用,但会优先调用固定参数的方法get
public static void main(String[] args) { t2(1);//immutable args... t2(1, "a", "b", "c");//mutable args... } private static void t2(int a, String... strs) { System.out.println("mutable args..."); } public static void t2(int a) { System.out.println("immutable args..."); }