Java中的可变参数类型
形式
String ...
说明
- 上述
...
是该参数的一部分,表示可以接收多个参数(0~n) - 以上只是一个示例,类似的语法在其他基本类型中也同样成立,如
Obect ...
,表示可以接收任意个对象类型
源码使用示例
在Java
源码中,我们可以发现,在1.5
之后,用这种语法的内容不在少数。
System.out.printf("%d", 1);
System.out.printf("%d %s", 1, "aaa");
如上面的格式化输出语句,观察源码可以发现,在方法的参数中就使用了这种语法。
// package java.io;
public PrintStream printf(String format, Object ... args) {
return format(format, args);
}
这样的写法,可以简化参数的传递,其实质等同于在参数中传递一个对象数组,Object[] args
。
自己定义示例
同样我们可以自己定义含可变参数的方法。
/**
* 此方法返回传入的参数中的最大的数
* @param args
* @return
*/
public static double max(double ... args) {
double largest = Double.NEGATIVE_INFINITY;
for (double d : args) {
if (d > largest) {
largest = d;
}
}
return largest;
}
// 调用时
double value = max(1, 2, 3.3, 1000);
System.out.println(value);
使用普通数组形式。
public static double min(double[] args) {
double smallest = Double.POSITIVE_INFINITY;
for (double d : args) {
if (d < smallest) {
smallest = d;
}
}
return smallest;
}
// 调用时
double[] args1 = {1.0, 2.0, 3.3, 1000.0};
System.out.println(min(args1));
通过对比可以发现,新的这种写法 更加灵活与便捷。