Java中的可變引數型別[初探]
阿新 • • 發佈:2021-01-16
Java中的可變引數型別
形式
String ...
說明
- 上述
...
是該引數的一部分,表示可以接收多個引數(0~n) - 以上只是一個示例,類似的語法在其他基本型別中也同樣成立,如
Obect ...
,表示可以接收任意個物件型別
原始碼使用示例
在Java
原始碼中,我們可以發現,在1.5
之後,用這種語法的內容不在少數。
System.out.printf("%d", 1);
System.out.printf("%d %s", 1, "aaa");
如上面的格式化輸出語句,觀察原始碼可以發現,在方法的引數中就使用了這種語法。
// package java.io;
public PrintStream printf(String format, Object ... args) {
return format(format, args);
}
這樣的寫法,可以簡化引數的傳遞,其實質等同於在引數中傳毒一個物件陣列,Object[] args
。
自己定義示例
同樣我們可以自己定義含可變引數的方法。
/**
* 此方法返回傳入的引數中的最大的數
* @param args
* @return
*/
public static double max(double ... args) {
double largest = Double.NEGATIVE_INFINITY;
for (double d : args) {
if (d > largest) {
largest = d;
}
}
return largest;
}
// 呼叫時
double value = max(1, 2, 3.3, 1000);
System.out.println(value);
使用普通陣列形式。
public static double min(double[] args) {
double smallest = Double.POSITIVE_INFINITY;
for (double d : args) {
if (d < smallest) {
smallest = d;
}
}
return smallest;
}
// 呼叫時
double[] args1 = {1.0, 2.0, 3.3, 1000.0};
System.out.println(min(args1));
通過對比可以發現,新的這種寫法 更加靈活與便捷。