在Java SE 5.0 以前的版本中,每个Java方法都有固定数量的参数。然而,现在的版本提供了可变的参数数量调用的方法(有时称为“变参”方法)
- printf方法是这样定义的:
public PrintStream printf(String format, Object ... args) {
return format(format, args);
}
这里的省略号...
是java代码的一部分,他表明这个方法可以接受任意数量的对象(除fmt参数之外)
实际上,printf
方法接受两个参数,一个是格式字符串,另一个是Object[]
数组,其中保存着所有的参数(如果调用者提供的是正行数组或者其他基本类型的数组,自动装箱功能将把他们转换成对象)。现在讲扫描fmt字符串,并将第i个格式说明符与args[i]
的值匹配起来。
用户也可以定义可变参数的方法:
public static double max (double... values)
{
double largest = Double.NEGATIVE_INFINITY;
for(double v : values) if (v > largest) largest = v;
return largest;
}