Java可变参数怎么用(附带实例)
在 Java 中,某些方法允许调用者提供数量可变的参数。其实在编程中你已经见过这样的方法,比如 printf() 方法。
例如以下调用:
现在让我们使用可变参数的形式重新定义 average() 方法,这样就可以计算任意多个参数的平均数了。例如,average(3, 4.5, -5, 0)。
声明可变参数的方法是在类型后使用 ... 符号:
如果已经将参数存储在一个数组中,那么也没必要对它们进行解包。可以直接传递该数组,而不是传递数组列表:
变量参数必须是方法的最后一个参数,但它之前可以有其他参数。例如,以下示例中的方法确保至少有一个参数:
例如以下调用:
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; }