java知識點之可變參數

1.概述

可變參數是jdk1.5後出現的新特性,允許在定義方法時不在指名參數的個數,而在調用方法時直接傳入需要的參數即可。

2.案例引入

示例代碼:

    //輸出連個參數的和
    public void output(int a,int b){
        System.out.println(a+b);
    }
    //輸出三個參數的和
    public void output(int a,int b,int c){
        System.out.println(a+b+c);
    }

說明:例如以上的兩個方法,由於事先並不確定傳入的參數個數,因此不得不通過方法重載定義多個同名方法,這樣做是相當繁瑣的。

3.解決方案

第一種解決方案:

    //以數組的形式接收參數
    public void output(int[] args){
        int num=0;
        for(int i=0;i<args.length;i++){
            num+=i;
        }
        System.out.println(num);
    }

說明:將方法的參數改爲數組形式可以解決參數個數不確定的問題,但是卻存在另一個麻煩。即調用該方法時,每次都需要建立一個參數數組用於傳入,因此這種方法也有一定的繁瑣性。

第二種解決方案-利用新特性:

    //部分代碼
    //利用可變參數解決參數不確定的問題
    public static void output(int... args){ 
        int num=0;
        for(int i=0;i<args.length;i++){
            num+=args[i];
        }
        System.out.println(num);
    }

    //在main方法中調用該方法
    public static void main(String[] args) {
        output(1,2,5,9);
    }

說明:利用可變參數這一新特性,在調用方法時只需要傳入需要的參數即可,不需要額外建立參數數組。在使用時,將方法中的參數(上例中的args)作爲數組操作即可。實際上,可變參數就是數組參數的一種簡化形式,只是對參數的數組化封裝由虛擬機代爲完成。

4.格式

    訪問修飾符 返回值類型 方法名(數據類型... 參數名){
        //具體操作
    }

例:

    public void show(String... args){
    }

5.使用錯誤

典型錯誤:

    public void show(int... agrs,String s){
        //具體代碼
    }

編譯報錯:

The variable argument type int of the method show must be the last parameter

說明:當方法的參數中既包含可變參數又包含普通參數時,若有參數置於可變參數後面,則一定發生錯誤,因爲這會導致代碼出現歧義。正確的做法是將可變參數置於方法參數列表的最後。

修正代碼:

    public void show(String s,int... agrs){
        //具體代碼
    }
發佈了49 篇原創文章 · 獲贊 77 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章