1. 程式人生 > 其它 >Java中的可變引數型別[初探]

Java中的可變引數型別[初探]

技術標籤:Java學習筆記java程式語言

Java中的可變引數型別

形式

String ...

說明

  1. 上述...是該引數的一部分,表示可以接收多個引數(0~n)
  2. 以上只是一個示例,類似的語法在其他基本型別中也同樣成立,如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));

通過對比可以發現,新的這種寫法 更加靈活與便捷。