再學Java 之 形參個數可變函式

scutwang發表於2014-05-01

自Java 5後,Java允許定義形參個數可變的方法,從而允許執行過程中,為方法指定不確定個數的形參。

其定義方法的格式如下:

void function_name ( type ... variables){
    //對variables陣列進行操作
}

在上面格式中,系統將輸入的引數全部儲存到variables陣列中。也就是說,下面的定義方式,其實是相同的:

void function_name ( type ... variables);
void function_name ( type[] variables);

 

在這裡,對形參個數可變函式,有三個地方需要注意一下:

(1)個數可變的形參只能處於形參列表的最後,一個方法中最多隻能包含一個長度可變的形參;

(2)這個個數可變的形參,既可以傳入多個引數,也可以傳入一個陣列(見下面例子);

  public static void main(String[] args){
        String[] strs = new String[]{"a","b","c"};
        //傳入陣列
        test(strs);
      //傳入多個引數
        test("d","e","f");
    }
    
    public static void test(String ... strs){
        for (String str : strs) {
            System.out.println(string);
        }
    }

(3)在過載中,假如出現一個普通的單個形參的函式與可變形參個數的函式過載,而呼叫傳入的引數只有一個,那麼系統將會優先呼叫單個形參的函式;如果想要呼叫可變形參個數的函式,則可以將引數轉換為陣列傳入,詳細見下面例子:

    public static void main(String[] args){
        //將會呼叫"單個引數的方法";
        test("a");
        //將傳入的引數轉換為陣列,將會呼叫"引數個數可變的方法";
        test(new String[]{"a"});
    }
    
    public static void test(String books){
        System.out.println("單個引數的方法。");
    }
    public static void test(String ... books){
        System.out.println("形參個數可變的方法。");
    }

 

 

 

 

 

相關文章