形式:類型... 參數名
示例:public void show(int... a) {};
可變參數在方法中被當作數組來處理
可變參數傳值的四種方式:
- 一個值也不傳,可變參數會接收到長度為0的數組
- 傳null,可變參數會接收到null
- 傳數組,可變參數會接收到數組
- 傳1個到多個數組元素值,可變參數會接收到數組
public class Test { public void changeParam(int... a) { System.out.println("數組長度為:" + a.length); } public static void main(String[] args) { Test m1 = new Test(); //一個值都不傳遞 m1.changeParam(); //傳數組對象 m1.changeParam(new int[]{5,7,9,1}); //傳多個元素值,會當成數組處理 m1.changeParam(1,2,3,4,5); //傳null,但是這個參數不可用 m1.changeParam(null); } }
可變參數和數組作為方法參數時的區別:
從個數來看,可變參數只能有一個,數組可以有多個
從定義位置來看,可變參數只能定義在參數列表的末尾,數組可以在任何位置
從傳參的形式來看,可變參數可以傳數組、null、0個參數、一到多個參數,數組可以傳數組引用、數組對象、null
方法重載:方法名相同,但是參數列表不一致,重載的方法會根據參數來匹配調用
public class Test { public void show(int a) { System.out.println("帶有一個參數的方法"); } public void show(int... a) { System.out.println("帶有可變參數的方法"); } public static void main(String[] args) { Test m1 = new Test(); //public void show(int... a) m1.show(); //public void show(int a) m1.show(6);//優先調用參數匹配的方法 //public void show(int... a) m1.show(new int[]{5,7,9,1}); //public void show(int... a) m1.show(1,2,3,4); } }