久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Java中不定項(xiàng)參數(shù)(可變參數(shù))的作用和使用方式

 昵稱45943784 2019-07-01

引言:

  我們?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方法,如下:

復(fù)制代碼
public static void main(String[] args){
    method();
method(null); method(1,2); method(1,2,3); method(1,2,3,4,5,6,7,8,9); //不同的參數(shù)個(gè)數(shù),,但是調(diào)用的都是同一個(gè)method方法 }
復(fù)制代碼

   int...args的參數(shù)形式能實(shí)現(xiàn)不定項(xiàng)參數(shù)實(shí)質(zhì)上是因?yàn)樽兞縜rgs是一個(gè)數(shù)組,。例如:

復(fù)制代碼
 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 }
復(fù)制代碼

   所以,,不定項(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í)

復(fù)制代碼
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 }
復(fù)制代碼

 

 

有什么不對(duì)或者需要補(bǔ)充,歡迎來(lái)信息,。

撰寫時(shí)間:2017-07-17 11:03:16

修改時(shí)間:2017-07-18  09:42:42

 

 

 

 

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多