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..."); }