首页 > 编程笔记 > Java笔记 阅读:2

Java可变参数怎么用(附带实例)

在 Java 中,某些方法允许调用者提供数量可变的参数。其实在编程中你已经见过这样的方法,比如 printf() 方法。

例如以下调用:
System.out.printf("%d", n);
System.out.printf("%d %s", n, "widgets");
这两个语句都调用了相同的 printf() 方法,但是一个调用有 2 个参数,另一个调用则有 3 个参数。

现在让我们使用可变参数的形式重新定义 average() 方法,这样就可以计算任意多个参数的平均数了。例如,average(3, 4.5, -5, 0)。

声明可变参数的方法是在类型后使用 ... 符号:
public static double average(double... values)
这时的参数实际上是一个 double 类型的数组。当调用该方法时,一个数组会被创建并用参数填充,在方法体内,你可以像使用任何其他数组一样使用它。
public static double average(double... values) {
   double sum = 0;
   for (double v : values) sum += v;
   return values.length == 0 ? 0 : sum / values.length;
}
现在可以调用:
double avg = average (3, 4.5, -5, 0);

如果已经将参数存储在一个数组中,那么也没必要对它们进行解包。可以直接传递该数组,而不是传递数组列表:
double[] scores = { 3, 4.5, -5, 0 };
double avg = average(scores);

变量参数必须是方法的最后一个参数,但它之前可以有其他参数。例如,以下示例中的方法确保至少有一个参数:
public static double max(double first, double... rest) {
   double result = first;
   for (double v : rest) result = Math.max(v, result);
   return result;
}

相关文章