更新時(shí)間:2019-09-05 10:39:11 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2659次
今天動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)小編為大家介紹“Java可變長(zhǎng)參數(shù)列表詳解”,希望此文能夠幫助到大家,下面就隨小編一起看看Java可變長(zhǎng)參數(shù)列表詳解的內(nèi)容吧。
Java中定義了變長(zhǎng)參數(shù),允許在調(diào)用方法時(shí)傳入不定長(zhǎng)度的參數(shù)。
Java可變長(zhǎng)參數(shù)定義及調(diào)用
在定義方法時(shí),在最后一個(gè)形參后加上三點(diǎn) …,就表示該形參可以接受多個(gè)參數(shù)值,多個(gè)參數(shù)值被當(dāng)成數(shù)組傳入。上述定義有幾個(gè)要點(diǎn)需要注意:
可變參數(shù)只能作為函數(shù)的最后一個(gè)參數(shù),但其前面可以有也可以沒(méi)有任何其他參數(shù)
由于可變參數(shù)必須是最后一個(gè)參數(shù),所以一個(gè)函數(shù)最多只能有一個(gè)可變參數(shù)
Java的可變參數(shù),會(huì)被編譯器轉(zhuǎn)型為一個(gè)數(shù)組
變長(zhǎng)參數(shù)在編譯為字節(jié)碼后,在方法簽名中就是以數(shù)組形態(tài)出現(xiàn)的。這兩個(gè)方法的簽名是一致的,不能作為方法的重載。如果同時(shí)出現(xiàn),是不能編譯通過(guò)的。可變參數(shù)可以兼容數(shù)組,反之則不成立
public void foo(String...varargs){}
foo("arg1", "arg2", "arg3");
//上述過(guò)程和下面的調(diào)用是等價(jià)的
foo(new String[]{"arg1", "arg2", "arg3"});
例如,求任意個(gè)整數(shù)的乘積。
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));
}
}
由于可變長(zhǎng)參數(shù)就是被編譯器轉(zhuǎn)化為數(shù)組實(shí)現(xiàn)的,我們完全可以寫(xiě)成以數(shù)組做參數(shù)的形式:
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}));
}
}
方法重載
優(yōu)先匹配固定參數(shù)
調(diào)用一個(gè)被重載的方法時(shí),如果此調(diào)用既能夠和固定參數(shù)的重載方法匹配,也能夠與可變長(zhǎng)參數(shù)的重載方法匹配,則選擇固定參數(shù)的方法:
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 優(yōu)先匹配固定參數(shù)的重載方法
test(); //version 1
}
}
匹配多個(gè)可變參數(shù)
調(diào)用一個(gè)被重載的方法時(shí),如果此調(diào)用既能夠和兩個(gè)可變長(zhǎng)參數(shù)的重載方法匹配,則編譯出錯(cuò):
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
}
}
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)小編介紹的“Java可變長(zhǎng)參數(shù)列表詳解”的內(nèi)容,希望對(duì)大家有幫助,更多java最新資訊內(nèi)容繼續(xù)關(guān)注動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)官網(wǎng),每天會(huì)有精彩內(nèi)容分享與你。
相關(guān)免費(fèi)視頻教程推薦
java編程入門(mén)教程下載——可變長(zhǎng)參數(shù):http://m.dabaquan.cn/xiazai/2528.html
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743