调用打印方法。。。
public PrintStream printf(String format, Object ... args) {
return format(format, args);
}
这里的省略号..是Java代码的一部分,表明这个方法可以接收任意数量的对象(除fmt参数之外)。
实际上,printf方法接收两个参数,一个是格式字符串,另一个是Object[]数组,其中保存着所有的参数(如果是基础类型,会自动装箱称为对象),然后扫描fmt字符串,并将第i个格式说明符与args[i]的值匹配起来,换句话说Object...参数类型和Object[]完全一样。
用户可以自己定义可变参数的方法,并将参数指定为任意类型,甚至是基本类型。下面是一个简单的示例:其功能为计算若干个数值的最大值。
package corejava;
public class MaxDoubleTest {
public static void main(String[] args) {
System.out.println(max(3.232132,6.232344,5.823485));
System.out.println(max());
}
public static double max(double... values) {
double largest = Double.MIN_VALUE;
for (double d : values) {
if(d > largest) {
largest = d;
}
}
return largest;
}
}
//结果
//6.232344
//4.9E-324
编译器将new double[]{3.232132,6.232344,5.823485}传递给max方法
注释:允许将一个数组传给可变参数方法的最后一个参数。
System.out.printf("%d %s",new Object[] {new Integer(1), "widgets"});
//1 widgets
因此,可以将已经存在且最后一个参数是数组的方法重新定义为可变参数的方法,而不会破坏任何已经存在的代码。例如,MessageFormat.format在JavaSE5就采用了这种方式,甚至可以将main方法声明为如下形式:
public static void main(String... args) {
System.out.println(max(3.232132,6.232344,5.823485));
System.out.println(max());
System.out.printf("%d %s",new Object[] {new Integer(1), "widgets"});
}
标签:Java,核心技术,max,Object,System,参数,可变,new,out
From: https://blog.csdn.net/qq_36324341/article/details/143461067