可变参数

  1. System.out.println("%d", n);
  2. System.out.println("%d %s", n, "widgets");

在上面两个println 方法中,尽管一个调用包含两个参数,另一个调用包含三个参数,但他们调用的是用一个方法。

printf 方法是这样定义的

  1. class PrintStream {
  2. public PrintStream printf(String fmt, Object... args) {
  3. return format(fmt, args);
  4. }
  5. }

上面的 Object 后的省略号 是Java代码的一部分,它表示这个方法可以接收任意数量的对象。

用户自定义可变参数方法

参数可以为任意类型,甚至是基本类型,该参数类型与数组完全一样。

  1. /* double... values 等于 double[]数组 */
  2. public static double max(double... values){
  3. double largest = Double.NEGATIVE_INFINITY;
  4. for(double d : values){
  5. if(v > largest) largest = v;
  6. return largest;
  7. }
  8. }
  9. double m = max(1.0, 4.8, 2.8);