可變參數(shù):適用于參數(shù)個數(shù)不確定,類型確定的情況跟衅,java把可變參數(shù)當做數(shù)組處理年枕。
如下所示:print()方法,用于打印接收到的所有int類型的數(shù)的和懊纳,但是不知道具體有幾個int類型的數(shù)揉抵,這個時候就可以用可變參數(shù)。
public class app {
public static void main(String[] args) {
print(100,89,3,5);
}
public static void print(int...num){
int sum =0;
for (int i : num) {
sum+=i;
}
System.out.println(sum);
}
}
注意:
1.如果有方法重載嗤疯,那擁有可變參數(shù)的方法會是最后一個被選擇的冤今。
2 .可變參數(shù)只能位于最后一項。當可變參數(shù)個數(shù)多余一個時茂缚,必將有一個不是最后一項戏罢,所以只支持有一個可變參數(shù)。因為參數(shù)個數(shù)不定脚囊,所以當其后邊還有相同類型參數(shù)時帖汞,java無法區(qū)分傳入的參數(shù)屬于前一個可變參數(shù)還是后邊的參數(shù),所以只能讓可變參數(shù)位于最后一項凑术。
通過反編譯,可以看出JAVA底層也是通過建立數(shù)組的方式來執(zhí)行這段代碼的所意。已下是反編譯之后的代碼淮逊,可以看到催首,傳入的參數(shù)被創(chuàng)建成了一個新數(shù)組,print方法中的參數(shù)就是那個新數(shù)組泄鹏。
public static void main(String args[])
{
print(new int[] {
100, 89, 3, 5
});
}
public static transient void print(int num[])
{
int sum = 0;
int ai[];
int k = (ai = num).length;
for (int j = 0; j < k; j++)
{
int i = ai[j];
sum += i;
}
System.out.println(sum);
}