Java可變長參數(shù)列表詳解

Java可變長參數(shù)列表詳解

長沙中公優(yōu)就業(yè)      2022-04-24 04:21:01     9

Java可變長參數(shù)列表詳解,  今天長沙中公優(yōu)就業(yè)java培訓(xùn)機(jī)構(gòu)小編為大家介紹“Java可變長參數(shù)列表詳解”,希望此文能夠幫助到大家,下面就隨小編一起看看

課程價格 請咨詢

上課時段: 授課校區(qū):

詳細(xì)介紹

  

今天長沙中公優(yōu)就業(yè)java培訓(xùn)機(jī)構(gòu)小編為大家介紹“Java可變長參數(shù)列表詳解”,希望此文能夠幫助到大家,下面就隨小編一起看看Java可變長參數(shù)列表詳解的內(nèi)容吧。



Java中定義了變長參數(shù),允許在調(diào)用方法時傳入不定長度的參數(shù)。


  Java可變長參數(shù)定義及調(diào)用


  在定義方法時,在最后一個形參后加上三點 …,就表示該形參可以接受多個參數(shù)值,多個參數(shù)值被當(dāng)成數(shù)組傳入。上述定義有幾個要點需要注意:


  可變參數(shù)只能作為函數(shù)的最后一個參數(shù),但其前面可以有也可以沒有任何其他參數(shù)


  由于可變參數(shù)必須是最后一個參數(shù),所以一個函數(shù)最多只能有一個可變參數(shù)


  Java的可變參數(shù),會被編譯器轉(zhuǎn)型為一個數(shù)組


  變長參數(shù)在編譯為字節(jié)碼后,在方法簽名中就是以數(shù)組形態(tài)出現(xiàn)的。這兩個方法的簽名是一致的,不能作為方法的重載。如果同時出現(xiàn),是不能編譯通過的。可變參數(shù)可以兼容數(shù)組,反之則不成立


public void foo(String...varargs){}


foo("arg1", "arg2", "arg3");


//上述過程和下面的調(diào)用是等價的

foo(new String[]{"arg1", "arg2", "arg3"});

 

例如,求任意個整數(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));

    }

}


  由于可變長參數(shù)就是被編譯器轉(zhuǎn)化為數(shù)組實現(xiàn)的,我們完全可以寫成以數(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)用一個被重載的方法時,如果此調(diào)用既能夠和固定參數(shù)的重載方法匹配,也能夠與可變長參數(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

    }

}


匹配多個可變參數(shù)


  調(diào)用一個被重載的方法時,如果此調(diào)用既能夠和兩個可變長參數(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");  //Compile error

    }

}


以上就是長沙中公優(yōu)就業(yè)java培訓(xùn)機(jī)構(gòu)小編介紹的“Java可變長參數(shù)列表詳解”的內(nèi)容,希望對大家有幫助,更多java最新資訊內(nèi)容繼續(xù)關(guān)注長沙中公優(yōu)就業(yè)java培訓(xùn)機(jī)構(gòu)官網(wǎng),每天會有精彩內(nèi)容分享與你。


相關(guān)免費視頻教程推薦


java編程入門教程下載——可變長參數(shù):http://www.bjpowernode.com/xiazai/2528.html


培訓(xùn)啦提醒您:交易時請核實對方資質(zhì),對于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險,謹(jǐn)防上當(dāng)。