Java學習筆記13:方法的可變引數
阿新 • • 發佈:2019-01-05
參考原址:http://www.runoob.com/w3cnote/java-varargs-parameter.html
在定義方法時,在最後一個形參後加上三點 …,就表示該形參可以接受多個引數值,多個引數值被當成陣列傳入。
有幾點需要注意:
- 可變引數只能作為函式的最後一個引數,但其前面可以有也可以沒有任何其他引數
- 由於可變引數必須是最後一個引數,所以一個函式最多隻能有一個可變引數
- Java的可變引數,會被編譯器轉型為一個數組
- 變長引數在編譯為位元組碼後,在方法簽名中就是以陣列形態出現的。這兩個方法的簽名是一致的,不能作為方法的過載。如果同時出現,是不能編譯通過的。可變引數可以相容陣列,反之則不成立
public void foo(String…varargs){}
foo(“arg1”, “arg2”, “arg3”);
//上述過程和下面的呼叫是等價的
foo(new String[]{“arg1”, “arg2”, “arg3”});
可變引數方法的呼叫
void foo(String... args);
void foo(String[] args);
呼叫可變引數方法,可以給出零到任意多個引數,編譯器會將可變引數轉化為一個數組。也可以直接傳遞一個數組,示例如下:
public class Varargs { public static void test(String... args) { for(String arg : args) { System.out.println(arg); } } public static void main(String[] args) { test();//0個引數 test("a");//1個引數 test("a","b");//多個引數 test(new String[] {"a", "b", "c"});//直接傳遞陣列 } } package Varags; /* * 可變引數 JDK 1.5 開始,Java支援傳遞同類型的可變引數給一個方法。 方法的可變引數的宣告如下所示: typeName... parameterName 在方法宣告中,在指定引數型別後加一個省略號(...) 。 一個方法中只能指定一個可變引數,它必須是方法的最後一個引數。任何普通的引數必須在它之前宣告。 */ public class VarargsDemo { public static void main(String[] args) { //呼叫可變引數的方法 printMax(34,3,2,56.5); printMax(new double[]{1,2,3}); } public static void printMax(double... numbers){ if(numbers.length==0){ System.out.println("No argument passed");; return; } double result=numbers[0];//賦初值 for(int i=1;i<numbers.length;i++){//求最大值 if(numbers[i]>result){ result=numbers[i]; } } System.out.println("The max value is "+result); } }