可变长度的参数list —— java古怪代码(2)
Java代码
/**
* 测试可变参数
* @author jond
*
*/
public class VarargTester {
public static void printArg(String… strings){
System.out.println("方法一:\n strings.length="+strings.length);
for (int i = 0; i < strings.length; i++) {
System.out.print(strings[i]+" ");
}
}
public static void printArg(String str,String[] strings){
System.out.println("方法二:\n ");
System.out.println(" strings.length="+strings.length);
for (int i = 0; i < strings.length; i++) {
System.out.print(strings[i]+" ");
}
}
public static void main(String[] args) {
//调用方法一
VarargTester.printArg();
VarargTester.printArg("a","b","c");
VarargTester.printArg("a","b","c","d");
String[] strings={"a","b","c"};
//调用方法二
VarargTester.printArg("eee", strings);
}
}
运行结果
方法一:
strings.length=0
方法一:
strings.length=3
a b c 方法一:
strings.length=4
a b c d 方法二:
strings.length=3
a b c
注解:
代码一
public static void printArg(String… strings)
代码一中的String… strings,在编译器会被解读成String[] strings,效果如以下代码(代码二)。代码一和代码二不能同时定义在一个类中。
代码二
public static void printArg(String[] strings)
代码一和代码二有类似的效果,但调用的方式完全不一样:
代码一的调用方式
VarargTester.printArg();
VarargTester.printArg("a","b","c");
VarargTester.printArg("a","b","c","d");
应用实例
public class MathUtils {
/**
* 求最大值,没传参数时返回Integer.MIN_VALUE
* @param values
* @return
*/
public static int max(int… values){
int max = Integer.MIN_VALUE;
for(int i : values){
if(i > max)
max = i;
}
return max;
}
public static void main(String[] args) {
System.out.println(MathUtils.max());
System.out.println(MathUtils.max(0,1,2,12,3));
System.out.println(MathUtils.max(2,43,566,32,23,23,23,234));
}
}
