可变参数
概述:
Java1.5增加了新特性:Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。
注意:
(1)、只能出现在参数列表的最后
(2)、...位于变量类型和变量名之间,前后有无空格都可以
(3)、调用可变参数逇方法时,编译器为该可变参数隐含创建的一个数组,在方法中以数组的形式访问可变参数
示例:
public class 可变参数 {
public static void main(String[] args) {
System.out.println(add(2, 3));
System.out.println(add(2, 3, 5));
}
public static int add(int x, int... args) {
int sum = x;
for (int i = 0; i < args.length; i++) {
sum += args[i];
}
return sum;
}
}
import java.util.Date;
public class 可变长参数 {
public static void m(int i){
System.out.println(i);
}
public static void m(int ...a){
System.out.println("test");
}
// //如果有精确匹配,则不会调用可变参数方法
// public static void m(int i){
// System.out.println(i);
// }
//可变长参数可以等同看做数组
public static void m1(String ...args){
for(int i=0;i<args.length;i++){
System.out.println(args[i]);
}
}
public static void m2(Class... args) throws Exception {
for(int i=0;i<args.length;i++){
Class c=args[i];
System.out.println(c.newInstance());
}
}
public static void main(String[] args) throws Exception{
m();
m(2);
m(1,2,3);
m1("张三","李四","王五");
//也可以将数组作为可变参数
String[] s={"张三","李四","王五"};
m1(s);
m2(Employ.class,Date.class);
}
}