文章目錄
- 在Java SE 5.0之後,方法的參數數目可以不是固定的,是可變的數目。
例如printf方法有多種使用方式:
System.out.printf(%d", n);
System.out.printf("%d %s", n, "widgets");
- 這裏的省略號 . . . 是 Java 代碼的一部分,它表明這個方法可以接收任意數量的對象(除 fmt 參數之外)。
printf方法接收兩個參數,一個是格式字符串, 另一個是 Object ] 數組。其中保存着所有的參數(如果調用者提供的是整型數組或者其他基本類型的值, 自動裝箱功能 將把它們轉換成對象 )。
現在將掃描 fmt字符串, 並將第 i 個格式說明符與 args[i] 的值匹配 起來。
編譯器需要對 printf的每次調用進行轉換, 以便將參數綁定到數組上,並在必要的時候 進行自動裝箱:
System.out.printf("%d %s", new Object[] { new Integer(n), "widgets" } );
用戶自己也可以定義可變參數的方法, 並將參數指定爲任意類型, 甚至是基本類型。下 面是一個簡單的示例:其功能爲計算若干個數值的最大值。
調用這個方法:
double m = max(3.1 , 40.4, -5);
編譯器將 new double[ ] {3.1, 40.4,-5} 傳遞給 max方法
可以將 main 方法聲明爲下列形式:
public static void main(String... args)
參考:《java核心技術卷Ⅰ》