天天看點

java之可變參數概述:格式:方法:特點:結論:

概述:

Java1.5增加了新特性:可變參數:适用于參數個數不确定,類型确定的情況,java把可變參數當做數組處理。注意:可變參數必須位于最後一項。當可變參數個數多餘一個時,必将有一個不是最後一項,是以隻支援有一個可變參數。因為參數個數不定,是以當其後邊還有相同類型參數時,java無法區分傳入的參數屬于前一個可變參數還是後邊的參數,是以隻能讓可變參數位于最後一項。

格式:

java之可變參數概述:格式:方法:特點:結論:

上面所說的不确定也包括0,是以不給可變參數傳遞實參也是可以的,注意這時傳遞的是一個空數組(int[]{})而不是null。

方法:

傳遞的方式:

  其實在實參傳遞過來的過程中,編譯器會把最後一個可變參數的形參轉化為數組形參,是以相當于是擷取了一個數組形參,那麼我們就需要用周遊的方法去擷取裡面的每一個實參。例如:

java之可變參數概述:格式:方法:特點:結論:

可變參數可以用于方法的重載,但是不能與相同資料類型的形參數組作為同個方法的重載判斷依據,因為可變參數在編譯器編譯後也會變成一個形參數組是以會引起它們的互相沖突。例如:

java之可變參數概述:格式:方法:特點:結論:

方法的重載還可能出現這種情況:當調用方法時傳入一個參數,有一個可變參數的方法和一個單個參數的方法都能與之比對,那麼他會執行固定個數的那個方法。如果有實參個數固定的與之比對,那麼它的優先級要可變參數的優先級。如圖:

java之可變參數概述:格式:方法:特點:結論:

那麼可變參數是否可以用形參數組的方式傳遞實參呢?答案是肯定的,因為他通過編譯後傳過去就是一個實參數組,是以完全可以直接在傳參的時候傳遞一個實參數組過去。換過來,參數數組是不能用可變參數的方式來傳參的。如圖:

還可以在可變參數中應用泛型。如圖:

特點:

  1. 隻能出現在參數清單的最後;
  2. ...位于變量類型和變量名之間,前後有無空格都可以;
  3. 調用可變參數的方法時,編譯器為該可變參數隐含建立一個數組,在方法體中一數組的形式通路可變參數。

結論: