首頁 > 軟體

Java可變參數Varargs簡介

2021-05-26 13:30:18

在Jdk1.5的版本中,java增加了一個新功能叫做Varargs。有意思的是,Varargs是一個冰島語的單詞。我們使用百度翻譯發現這個單詞的中文釋義為「可變參數」。

我們怎麼理解這個Varargs呢?

在java中,可變參數是指指定類型的數量可變的一個及以上的入參變數。其核心的特點可以用一句話來表述「數量可變的同類參數」,英文單詞表示為「variable number of arguments」。

定義可變參數的方式非常簡單,直接在參數類型與參數名稱之間加上一個英文狀態的省略號「...」即可。

請看下方程式程式碼,程式展示了可變參數的傳參、元素數量、取元素的方法:

小夥伴們,有沒有發現可變參數與陣列很相似?不用猜了,我們做個試驗你就一目瞭然了。下圖是debug模式時,檢視到的可變參數的類型:

我們與陣列做個比較:

可以看到兩者是一樣的結構。所以我們能夠得出可變參數實際上是構造了一個元素數量不固定的陣列,陣列元素的個數由我們呼叫方法時傳參的個數來決定。

看到這裡,相信小夥伴們已經明白了可變參數是什麼,也大體知道了怎麼使用。但是我在這裡提醒大家注意一個點:一個方法的入參只能有一個可變參數。如果傳入參數的數量在2個及以上,那麼可變參數必須放在最後,否則編譯不通過。如圖:

有小夥伴會問:上圖的查詢中第一個參數我不傳int類型變數,而是傳入與str這個可變參數類型一樣的字元串String。這樣會有問題嗎?

當然沒有問題了。可變參數傳參看起來與傳入多個參數是一樣的,如圖2中main方法呼叫test方法時傳入的實際上是test方法的可變參數str,但是看上去就像傳入三個參數一樣。如果我們將圖5中的int a改為String a,在呼叫時,由於第一個參數是String a,按照傳參的順序,呼叫test方法時第一個傳入的字元串參數就是變數a。而變數a之後傳入的多個字元串則會被編譯器認為是可變參數str的值。

可變參數的缺點:效能不高,會影響程式的執行效率。可變參數方法每次被呼叫都會進行一次陣列容量的重新分配和陣列變數初始化。所以如果是固定長度的同類型元素作為參數,建議直接創建和使用陣列。

小夥伴們,你們get到這個技能了嗎?

#java專欄#


IT145.com E-mail:sddin#qq.com