參數就是我們調用一個方法時需要傳入得數據,在方法中可能需要參數協助處理數據或者對參數進行解析處理以達到我們希望得到的數據和結果。
平常我們在寫一個方法時,我們能確定需要傳入什么樣的參數以及參數的個數,這樣我們在實現這個方法的時候在確定參數的時候都會有明確的目標。但是有時候會有這種特殊情況,我們並不知道我們將要傳入幾個參數,或者說我們並不確定外部會傳入多少參數。在這種情況下,我們就要用到可變參數列表。下面是可變參數方法的實現方法。
1、傳入數組對象或者集合,這里只對傳入數組對象進行簡單說明,集合的實現也是一樣。其實很簡單,我們只要把需要傳入的參數放到一個數組里面或者集合里面,再把數組或者集合當做參數傳入即可。
1 package demoArgs; 2 /** 3 * 測試數組對象當做參數 4 * @author dyf 5 * 6 */ 7 public class TestArgs { 8 //傳一個對象數據當做參數 9 static void printArray(Object[] args){ 10 for (Object object : args) { 11 System.out.println(object); 12 } 13 } 14 15 public static void main(String[] args) { 16 printArray(new Object[]{ 17 new Integer(123),new Float(3.14),new Double(123.123) 18 }); 19 20 printArray(new Object[]{"one","two","three"}); 21 22 printArray(new Object[]{new A(),new A(),new A()}); 23 } 24 25 } 26 27 class A{}
打印結果:
123
3.14
123.123
one
two
three
demoArgs.A@4471dfd7
demoArgs.A@101ebf5c
demoArgs.A@52a53948
------------------------------------------------------------------------------------------------------------------------------
2、這種方法原理也是同上面一種相識,只不過是參數格式不同,格式是在參數類型后面跟三個點(...)然后在寫上參數名。具體看代碼。
1 package demoArgs; 2 /** 3 * 測試可變參數列表 4 * @author dyf 5 * 6 */ 7 public class TestArgs2 { 8 // 9 static void printArray(Object... args){ 10 for (Object obj : args) { 11 System.out.println(obj); 12 13 } 14 } 15 16 public static void main(String[] args) { 17 printArray(new Object[]{ 18 new Integer(123),new Float(3.14),new Double(123.123) 19 }); 20 21 printArray(new Object[]{"one","two","three"}); 22 23 printArray(new Object[]{new B(),new B(),new B()}); 24 25 printArray((Object[])new Integer[]{1,2,3,4,5,}); 26 27 //這種形式不傳參數也可以,有時這種用法會很有用 28 printArray(); 29 30 printArray(new Integer(111),new String("測試可變參數列表")); 31 } 32 33 } 34 class B {}
打印結果:
123
3.14
123.123
one
two
three
demoArgs.B@52a53948
demoArgs.B@5d53d05b
demoArgs.B@2994363b
1
2
3
4
5
111
測試可變參數列表
-----------------------------------------------------------------------------------------------
3、上面說的傳入參數的參數類型是一致的,其實當傳入的參數類型不一致的時候也可以實現傳入可變參數列表。可變參數也可以不傳。
1 package demoArgs; 2 /** 3 * 測試多種類型的可變參數 4 * @author dyf 5 * 6 */ 7 public class TestArray3 { 8 static void printArray(int i,String... s){ 9 for (String str : s) { 10 System.out.println(i + "---" + str); 11 i++; 12 } 13 14 System.out.println(i); 15 } 16 17 public static void main(String[] args) { 18 printArray(1, "11","22","33"); 19 20 printArray(1); 21 } 22 }
打印結果:
1---11
2---22
3---33
4
1
