前言:提到可變參數可以用函數重載來做一個引子,首先來看一個類
在上面的類中,我定義了一個求和方法sum,利用函數重載實作了可以傳兩個參數,也可以傳三個參數,但是如果我想傳四個參數、五個參數,乃至1000個參數,就有點難辦了,可以依次寫1000個重載函數,但是這樣太麻煩了,相信沒有人會願意做這樣的事。
針對這種情況,jdk就推出了可變參數。
可變參數是jdk的新特性,格式:修飾符 傳回值類型 方法名(資料類型... 變量 ) { }
注意:這裡的變量其本質是一個數組,數組的資料類型就是前邊定義的類型。
可變參數使用示例:
對于上面的例子,當調用sum方法的時候,不管傳遞多少個int類型的參數,都是可以的。
以上面的例子為例,可變數組的本質實質上是将傳遞過來的所有參數在底層包裝成一個int類型數組。
值得注意的是,如果在方法中想用可變參數,最好将可變參數定義在最後,還以上面例子為例,因為如果像這種情況:
将 public static int sum(int... x) 改為 public static int sum(int... x,int y) ,這樣是不正确的,因為可變參數已經将 a,b,c 全部包裝成了數組,剩下的已經沒有參數可以給 y 了,但是如果改成public static int sum(int y,int... x) 這是可以接受的,這時候将 a 作為了y參數,可變參數将 b、c 包裝成了 int
數組。
小結:可變參數本質是将參數包裝成指定類型數組,在使用的時候,最好把可變參數定義在末尾。如果定義在前邊,可能會将所有參數都包裝成數組。