概述:
Java1.5增長了新特性:可變參數:適用於參數個數不肯定,類型肯定的狀況,java把可變參數當作數組處理。注意:可變參數必須位於最後一項。當可變參數個數多餘一個時,必將有一個不是最後一項,因此只支持有一個可變參數。由於參數個數不定,因此當其後邊還有相同類型參數時,java沒法區分傳入的參數屬於前一個可變參數仍是後邊的參數,因此只能讓可變參數位於最後一項。java
格式:
上面所說的不肯定也包括0,因此不給可變參數傳遞實參也是能夠的,注意這時傳遞的是一個空數組(int[]{})而不是null。數組
方法:
傳遞的方式:
其實在實參傳遞過來的過程當中,編譯器會把最後一個可變參數的形參轉化爲數組形參,因此至關因而獲取了一個數組形參,那麼咱們就須要用遍歷的方法去獲取裏面的每個實參。例如:ide
可變參數能夠用於方法的重載,可是不能與相同數據類型的形參數組做爲同個方法的重載判斷依據,由於可變參數在編譯器編譯後也會變成一個形參數組因此會引發它們的相互衝突。例如:3d
方法的重載還可能出現這種狀況:當調用方法時傳入一個參數,有一個可變參數的方法和一個單個參數的方法都能與之匹配,那麼他會執行固定個數的那個方法。若是有實參個數固定的與之匹配,那麼它的優先級要可變參數的優先級。如圖:對象
那麼可變參數是否能夠用形參數組的方式傳遞實參呢?答案是確定的,由於他經過編譯後傳過去就是一個實參數組,因此徹底能夠直接在傳參的時候傳遞一個實參數組過去。換過來,參數數組是不能用可變參數的方式來傳參的。如圖:
還能夠在可變參數中應用泛型。如圖:blog
特色:
結論:
可變參數的核心是將參數封裝爲數組,可是傳入null時並非只含有一個null元素的數組,而是null。編譯器
可變參數方便調用者傳入不數量的參數且不須要在前面很是不優雅的構造數組對象。it