引言: 我們?cè)诰帉懛椒ǖ倪^(guò)程中,可能會(huì)遇見(jiàn)一個(gè)方法有不確定參數(shù)個(gè)數(shù)的情況,。一般我們會(huì)用方法重載來(lái)解決問(wèn)題: 1 //方法重載,解決參數(shù)個(gè)數(shù)不確定問(wèn)題 2 public void method(); 3 public void method(int i); 4 public void method(int i, int j); 5 public void method(int i, int j, int k); 但是當(dāng)參數(shù)多的時(shí)候就會(huì)顯得很繁瑣,,同時(shí)每次擴(kuò)展都會(huì)很麻煩,。于是我們可以使用數(shù)組作為參數(shù): 1 int[] a={1, 2, 3, 4}; //想要多少個(gè)自己搞 2 public void method(int[] args); But,這樣還是有個(gè)準(zhǔn)備參數(shù)的過(guò)程(還要構(gòu)造一個(gè)數(shù)組,,麻煩?。S谑俏覀兛梢允褂?span style="color: #ff0000;">不定項(xiàng)參數(shù)(可變參數(shù))的方式:
1 public void method(int...args); //是的,,你沒(méi)有看錯(cuò)就是省略號(hào),,格式就是這樣,不是我省略了什么,。
這樣做就可以解決參數(shù)個(gè)數(shù)不確定的問(wèn)題,。 使用方式: 如果我們調(diào)用上面的method方法,如下: public static void main(String[] args){ method(); int...args的參數(shù)形式能實(shí)現(xiàn)不定項(xiàng)參數(shù)實(shí)質(zhì)上是因?yàn)樽兞縜rgs是一個(gè)數(shù)組,。例如: 1 public static void method(int...arg){ 2 for(int i=0; i<arg.length; i++) 3 System.out.println(arg[i]); 4 } 5 6 public static void main(String[] args){ 7 method(1, 2, 3, 4); 8 9 int[] a={1, 2, 3, 4}; 10 method(a); //這兩種使用方法輸出同樣的結(jié)果,所以不定項(xiàng)參數(shù)兼容數(shù)組 11 } 所以,,不定項(xiàng)參數(shù)可以理解為數(shù)組,。所以: 1 public void method(int[]...arg); //相當(dāng)于是二維數(shù)組,arg中每個(gè)空間保存一個(gè)數(shù)組 public void method(int...args); public void method(int[] args); //編譯無(wú)法通過(guò),,因?yàn)楸举|(zhì)上是一樣的無(wú)法完成重載 注意事項(xiàng): 1)不定項(xiàng)參數(shù)必須放在參數(shù)列表最后一個(gè)。 2)不定項(xiàng)參數(shù)只能有一個(gè)(多個(gè),,必然有一個(gè)不是最后一個(gè)),。 3)重載時(shí),運(yùn)行優(yōu)先級(jí)問(wèn)題,。 1)為什么不定項(xiàng)參數(shù)必須放參數(shù)列表最后一個(gè),, public void method(int...args, int i) //編譯錯(cuò)誤,因?yàn)榍懊娌欢?xiàng),,系統(tǒng)不可以判斷i是哪一個(gè) 2)為什么不定項(xiàng)參數(shù)只能有一個(gè), 1 public void method(int...args1, int...args2) //編譯錯(cuò)誤,,提示不定項(xiàng)的參數(shù)必須放最后,,因?yàn)閍rgs1不確定個(gè)數(shù),系統(tǒng)不能判斷什么時(shí)候是args2的參數(shù) 2 3 public void method(int i, int j, int...args) //正確用法 4 public void method(String s, double d, int...args) //正確用法 3)重載時(shí)運(yùn)行優(yōu)先級(jí) 1 public void method(String...args); 2 public void method(String s1); 3 public void method(String s2, String s3); //確定參數(shù)的方法優(yōu)先級(jí)高于不定項(xiàng)參數(shù)的方法 4 5 public static void main(String[] args){ 6 method("看看調(diào)用哪個(gè)方法"); //調(diào)用了method(String s1) 7 method("猜猜是哪個(gè)", ",。,。。"); //調(diào)用了method(String s1, String s2) 8 //可知,,系統(tǒng)先匹配確定參數(shù)的方法,,沒(méi)有再去匹配調(diào)用不定項(xiàng)參數(shù)的方法 9 }
有什么不對(duì)或者需要補(bǔ)充,歡迎來(lái)信息,。 撰寫時(shí)間:2017-07-17 11:03:16 修改時(shí)間:2017-07-18 09:42:42
|
|
來(lái)自: 昵稱45943784 > 《待分類》