最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java方法的可變參數(shù)類型實例分析

 更新時間:2014年09月19日 14:52:02   投稿:shichen2014  
這篇文章主要介紹了Java方法的可變參數(shù)類型,通過實例對Java中的可變參數(shù)類型進行了較為深入的分析,需要的朋友可以參考下

Java方法中的可變參數(shù)類型是一個非常重要的概念,有著非常廣泛的應(yīng)用。本文就以實例形式對此加以分析。具體如下:

一般來說,許多Java初學(xué)者在看到下面的這段代碼的時候,都會問一個問題:dealArray方法里那三個小點點是什么???

public class TestVarArgus { 
  public static void dealArray(int... intArray){ 
     
  } 
   
  public static void main(String args[]){ 
     
  } 
} 

這就是本文所要討論的問題:可變的參數(shù)類型,也稱為不定參數(shù)類型。英文縮寫是varargus,還原一下就是variable argument type。通過它的名字可以很直接地看出來,這個方法在接收參數(shù)的時候,個數(shù)是不定的。那么好,現(xiàn)在就先來調(diào)用下這個方法。請看代碼和輸出:

public class TestVarArgus { 
  public static void dealArray(int... intArray){ 
    for (int i : intArray) 
      System.out.print(i +" "); 
     
    System.out.println(); 
  } 
   
  public static void main(String args[]){ 
    dealArray(); 
    dealArray(1); 
    dealArray(1, 2, 3); 
  } 
} 

輸出:

1  
1 2 3  

通過main方法里的調(diào)用,可以看出來這個可變參數(shù)既可以是沒有參數(shù)(空參數(shù)),也可以是不定長的??吹竭@里估計都能明白,這個不定長的參數(shù)其實和數(shù)組參數(shù)挺像的。事實上,也確實是這么回事兒。編譯器會在悄悄地把這最后一個形參轉(zhuǎn)化為一個數(shù)組形參,并在編譯出的class文件里作上一個記號,表明這是個實參個數(shù)可變的方法。請看代碼:

dealArray(); //dealArray(int[] intArray{}); 
dealArray(1); //dealArray(int[] intArray{1}); 
dealArray(1, 2, 3); //dealArray(int[] intArray{1, 2, 3}); 

說到這里,那么可以來驗證一下,看看是不是這個可變參數(shù)就是數(shù)組類參數(shù)?看代碼:

public class TestVarArgus { 
  public static void dealArray(int... intArray){ 
    for (int i : intArray) 
      System.out.print(i +" "); 
     
    System.out.println(); 
  } 
   
  public static void dealArray(int[] intArray){//會有Duplicate method dealArray(int[]) in type TestVarArgus的錯誤 
    for (int i : intArray) 
      System.out.print(i +" "); 
     
    System.out.println(); 
  } 
   
  public static void main(String args[]){ 
    dealArray();  
    dealArray(1); 
    dealArray(1, 2, 3); 
  } 
} 

從上面這段代碼可以看出,這兩個方法是沖突的,是無法重載的。到這里,再來做一個有意思的實驗:

代碼1:

public class TestVarArgus { 
  public static void dealArray(int... intArray){ 
    for (int i : intArray) 
      System.out.print(i +" "); 
     
    System.out.println(); 
  } 
   
  public static void main(String args[]){ 
    int[] intArray = {1, 2, 3}; 
     
    dealArray(intArray); //通過編譯,正常運行 
  } 
} 

代碼2:

public class TestVarArgus { 
  public static void dealArray(int[] intArray){ 
    for (int i : intArray) 
      System.out.print(i +" "); 
     
    System.out.println(); 
  } 
   
  public static void main(String args[]){ 
    dealArray(1, 2, 3); //編譯錯誤 
  } 
} 

從上面這兩段代碼可以看出來,可變參數(shù)是兼容數(shù)組類參數(shù)的,但是數(shù)組類參數(shù)卻無法兼容可變參數(shù)。其實對于第二段代碼而言,編譯器并不知道什么可變不可變,在它看來,需要定義一個dealArray(int, int, int)類的方法。所以,自然就無法去匹配數(shù)組類參數(shù)的dealArray方法了。

既然Java方法接收可變參數(shù),那么接下來我們再來看一下下面的代碼:

public class TestVarArgus { 
  public static void dealArray(int count, int... intArray){ 
     
  } 
   
  public static void dealArray(int... intArray, int count){//編譯報錯,可變參數(shù)類型應(yīng)該作為參數(shù)列表的最后一項 
     
  } 
   
  public static void main(String args[]){ 
      
  } 
} 

這段代碼說明了,可變參數(shù)類型必須作為參數(shù)列表的最后一項,而不能放在定長參數(shù)的前面。估計你會想到一個詞“優(yōu)先級”。因為沒有確切的說明,只是這樣一種規(guī)定,這里可以借用“優(yōu)先級”這個詞來理解一下,請看下面的代碼:

public class TestVarArgus { 
  public static void dealArray(int... intArray){ 
    System.out.println("1"); 
  } 
   
  public static void dealArray(int count, int count2){ 
    System.out.println("2"); 
  } 
   
  public static void main(String args[]){ 
    dealArray(1, 2); 
  } 
} 

代碼貼出來估計都知道是輸出2,而不是1。這里需要記?。?strong>能匹配定長的方法,那么優(yōu)先匹配該方法。含有不定參數(shù)的那個重載方法是最后被選中的。

最后,大家都知道main方法的參數(shù)就是一個數(shù)組類型的,那么它其實也是可以改成不定參數(shù)類型。試一試吧,看看有沒有編譯錯誤。

相信本文所述對大家Java程序設(shè)計的學(xué)習(xí)有一定的借鑒價值。

相關(guān)文章

  • Java中二叉樹數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)示例

    Java中二叉樹數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)示例

    這篇文章主要介紹了Java中二叉樹數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)示例,包括前中后序遍歷和求二叉樹深度的方法,需要的朋友可以參考下
    2015-08-08
  • SpringBoot集成elasticsearch使用圖文詳解

    SpringBoot集成elasticsearch使用圖文詳解

    Spring Boot集成Elasticsearch其實非常簡單,這篇文章主要給大家介紹了關(guān)于SpringBoot集成elasticsearch使用的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-04-04
  • 小議Java中final關(guān)鍵字使用時的注意點

    小議Java中final關(guān)鍵字使用時的注意點

    final關(guān)鍵字代表著最后、不可改變,無論是在用final修飾類、修飾方法還是修飾變量時,都要注意內(nèi)存分配的問題.這里來小議Java中final關(guān)鍵字使用時的注意點:
    2016-06-06
  • Java中URL的處理方法詳解

    Java中URL的處理方法詳解

    URL(Uniform?Resource?Locator)中文名為統(tǒng)一資源定位符,有時也被俗稱為網(wǎng)頁地址,表示為互聯(lián)網(wǎng)上的資源,本文主要為大家介紹了Java是如何處理URL的,感興趣的可以了解一下
    2023-05-05
  • Java如何自動生成api文檔

    Java如何自動生成api文檔

    在?Java?開發(fā)中,自動生成?API?文檔是一項非常實用的功能,這篇為大家介紹了幾種常見的?Java?自動生成?API?文檔的方式,需要的可以參考一下
    2025-02-02
  • 圖文詳解Maven工程打jar包的N種方式

    圖文詳解Maven工程打jar包的N種方式

    最近在打包maven項目時,該項目中僅有一個測試類,想打成jar包運行測試,所以下面這篇文章主要給大家介紹了關(guān)于Maven工程打jar包的N種方式,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • Java如何實現(xiàn)圖片的疊加與拼接操作

    Java如何實現(xiàn)圖片的疊加與拼接操作

    這篇文章主要介紹了Java如何實現(xiàn)圖片的疊加與拼接操作,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • java8、jdk8日期轉(zhuǎn)化成字符串詳解

    java8、jdk8日期轉(zhuǎn)化成字符串詳解

    在本篇文章中小編給大家整理了關(guān)于java8、jdk8日期轉(zhuǎn)化成字符串的相關(guān)知識點和代碼,需要的朋友們學(xué)習(xí)下。
    2019-04-04
  • springboot vue完成發(fā)送接口請求顯示響應(yīng)頭信息

    springboot vue完成發(fā)送接口請求顯示響應(yīng)頭信息

    這篇文章主要為大家介紹了springboot+vue完成發(fā)送接口請求顯示響應(yīng)頭信息,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Java線程同步方法實例總結(jié)

    Java線程同步方法實例總結(jié)

    這篇文章主要介紹了Java線程同步方法,結(jié)合實例形式總結(jié)分析了Java線程同步、并發(fā)控制相關(guān)實現(xiàn)方法及操作注意事項,需要的朋友可以參考下
    2018-08-08

最新評論

象山县| 达拉特旗| 阳朔县| 乐都县| 禄劝| 交口县| 四平市| 葫芦岛市| 比如县| 秦安县| 南江县| 泸水县| 卫辉市| 巴彦县| 嵩明县| 咸宁市| 肃南| 武隆县| 达拉特旗| 达孜县| 虹口区| 旺苍县| 天台县| 定日县| 漳平市| 昌吉市| 抚顺市| 浦北县| 云南省| 图片| 康平县| 竹溪县| 腾冲县| 崇礼县| 灌南县| 周宁县| 兴义市| 华坪县| 广州市| 马龙县| 南江县|