下面是一個簡單的小程序:
import java.util.Arrays;
class lesson6
{
public static void main(String[] args)
{
int array[]={2,3,1,5,4,6};
System.out.println(Arrays.toString(array));
System.out.println(getSum(array));
//System.out.println(getSum(2,3,1,5,4,6));
}
static int getSum(int array[])//計算元素之和
{
int sum=0;
for(int i=0;i<array.length;i++)
sum+=array[i];
return sum;
}
}
其中g(shù)etSum(int array[])方法的聲明就限定了它只能接受一維int類型的數(shù)組。如果我們現(xiàn)在試圖運行第十行(被注釋的那行),這樣肯定會出錯。這種方法的聲明方式特別在不知道要傳入?yún)?shù)個數(shù)時候,缺點比較明顯。
從Java5開始,出現(xiàn)了可變參數(shù)。特征為:參數(shù)個數(shù)可變,可以傳遞0到N個;必須為方法最后一個參數(shù);調(diào)用可變參數(shù)的方法時,編譯器為該可變參數(shù)隱含創(chuàng)建一個數(shù)組,在方法體中一數(shù)組的形式訪問可變參數(shù)。
我們將上面代碼的注釋取消,并將getSum(int array[])改為getSum(int ... array)來實現(xiàn)我們想要的結(jié)果。獲得結(jié)果如下:
由下方的兩次輸出21可得,getSum(int ... array)成功的接受了2種不同的數(shù)據(jù)個數(shù)的傳入。
另外在實際編程中需要特別注意的一點,可變參數(shù)必須為方法最后一個參數(shù)。大家可以對上面代碼進行簡單改動進行試驗。