大家都知道main方法的參數就是一個數組類型的,那麼它其實也是可以改成不定參數類型。我試了試,並調用了一些彈出來的方法。 嗯,我把Sting後面的“[ ]”換成了三個點(...),這三個點代表Java中的可變數組參數。可變的參數類型(variable argument type),也稱為不定參數類型 ...
大家都知道main方法的參數就是一個數組類型的,那麼它其實也是可以改成不定參數類型。我試了試,並調用了一些彈出來的方法。
public class ClassC2 { public static void main(String...args) { System.out.println(args.getClass()); //Exception in thread "main" class [Ljava.lang.String; System.out.println("======分割線1====="); System.out.println(args.hashCode()); //4126736 System.out.println("======分割線2====="); System.out.println(args.toString()); System.out.println("======分割線3====="); //[Ljava.lang.String;@3ef810 System.out.println(args.length); //0 System.out.println("======分割線4====="); args.notify(); //java.lang.IllegalMonitorStateException } }
嗯,我把Sting後面的“[ ]”換成了三個點(...),這三個點代表Java中的可變數組參數。可變的參數類型(variable argument type),也稱為不定參數類型。英文縮寫是varargus。也就是說,這個方法在接收參數的時候,個數是不定的。
public class ClassC { public static void main(String[] args) { String[] array = { "Java", "PHP", "C#" };//傳數組 test(array);//調用 } static void test(String... a) { //利用可變參數的慄子 System.out.println(a);// 列印:[Ljava.lang.String;@da6bf4 System.out.println(a.length);//3 for (int i = 0; i < a.length; i++) { // for遍歷 System.out.print(a[i]+"\t");//方便記錄,我用了讓它一行輸出的效果:Java PHP C# } } }
//不像上面那樣調用也可以,下麵再演示幾種調用方法 public class ClassC { public static void main(String[] args) { test();//沒有賦值,直接調用 } static void test(String... a) { //利用可變參數的慄子 System.out.println(a);// 列印:[Ljava.lang.String;@1e58cb8 System.out.println(a.length);//0 for(String s:a){ //複習一下增強for System.out.println(s); } } }
//不像上面那樣調用也可以,下麵再演示幾種調用方法 public class ClassC { public static void main(String[] args) { // new一個空數組 test(new String[0]); } static void test(String... a) { // 利用可變參數的慄子 System.out.println(a);// 列印:[Ljava.lang.String;@1e58cb8 System.out.println(a.length);//0 for (String s : a) { // 複習一下增強for System.out.println(s); } } }
//不像上面那樣調用也可以,下麵再演示幾種調用方法 public class ClassC { public static void main(String[] args) { test(new String[]{"張三","李四","王五"}); } static void test(String... a) { // 利用可變參數的慄子 System.out.println(a);// 列印:[Ljava.lang.String;@b9e45a System.out.println(a.length);//3 for (String s : a) { // 複習一下增強for System.out.print(s+"\t");//張三 李四 王五 } } }
由此可見,將參數定義為可變參數,有一下兩個有點:
1.不必擔心將來在調用的時候,去迎合之前定義的參數;
2.沒想出來
(我只想這些,歡迎補充)