更新時間:2019-09-05 10:39:11 來源:動力節點 瀏覽2674次
今天動力節點java培訓機構小編為大家介紹“Java可變長參數列表詳解”,希望此文能夠幫助到大家,下面就隨小編一起看看Java可變長參數列表詳解的內容吧。
Java中定義了變長參數,允許在調用方法時傳入不定長度的參數。
Java可變長參數定義及調用
在定義方法時,在最后一個形參后加上三點 …,就表示該形參可以接受多個參數值,多個參數值被當成數組傳入。上述定義有幾個要點需要注意:
可變參數只能作為函數的最后一個參數,但其前面可以有也可以沒有任何其他參數
由于可變參數必須是最后一個參數,所以一個函數最多只能有一個可變參數
Java的可變參數,會被編譯器轉型為一個數組
變長參數在編譯為字節碼后,在方法簽名中就是以數組形態出現的。這兩個方法的簽名是一致的,不能作為方法的重載。如果同時出現,是不能編譯通過的。可變參數可以兼容數組,反之則不成立
public void foo(String...varargs){}
foo("arg1", "arg2", "arg3");
//上述過程和下面的調用是等價的
foo(new String[]{"arg1", "arg2", "arg3"});
例如,求任意個整數的乘積。
package exercise;
public class product {
public static int func(int... args){
int ret = 1;
for(int i:args) ret *= i;
return ret;
}
public static void main(String[] args){
System.out.println(func(1,2,3));
System.out.println(func(2,2,2,2,2,2));
System.out.println(func(100,1000));
}
}
由于可變長參數就是被編譯器轉化為數組實現的,我們完全可以寫成以數組做參數的形式:
package exercise;
public class product {
public static int func(int[] args){
int ret = 1;
for(int i:args) ret *= i;
return ret;
}
public static void main(String[] args){
System.out.println(func(new int[]{1,2,3}));
System.out.println(func(new int[]{2,2,2,2,2,2}));
System.out.println(func(new int[]{100,1000}));
}
}
方法重載
優先匹配固定參數
調用一個被重載的方法時,如果此調用既能夠和固定參數的重載方法匹配,也能夠與可變長參數的重載方法匹配,則選擇固定參數的方法:
public class Varargs {
public static void test(String... args) {
System.out.println("version 1");
}
public static void test(String arg1, String arg2) {
System.out.println("version 2");
}
public static void main(String[] args) {
test("a","b"); //version 2 優先匹配固定參數的重載方法
test(); //version 1
}
}
匹配多個可變參數
調用一個被重載的方法時,如果此調用既能夠和兩個可變長參數的重載方法匹配,則編譯出錯:
public class Varargs {
public static void test(String... args) {
System.out.println("version 1");
}
public static void test(String arg1, String... arg2) {
System.out.println("version 2");
}
public static void main(String[] args) {
test("a","b"); //Compile error
}
}
以上就是動力節點java培訓機構小編介紹的“Java可變長參數列表詳解”的內容,希望對大家有幫助,更多java最新資訊內容繼續關注動力節點java培訓機構官網,每天會有精彩內容分享與你。
相關免費視頻教程推薦
java編程入門教程下載——可變長參數:http://www.ilovecolors.com.cn/xiazai/2528.html
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習