在java5中提供了可变长参数,也就是在方法中一个可变长参数可以代表同一类型的多个参数(数组);变长参数使用String...str标识;
1.向可变长参数方法传递多个参数
package extensions;
public class ParamVar {
public static void print(String...str) {
for(String s:str) {
System.out.println(s);
}
}
public static void main(String[] args) {
print("12","12");
}
}
2.可变长参数不能为空(向可变长参数传递null)
package extensions;
public class ParamVar {
public static void print(String...str) {
for(String s:str) {
System.out.println(s);
}
}
public static void main(String[] args) {
print(null);
}
}
3.向可变长参数传递一个数组
package extensions;
public class ParamVar {
public static void print(String...str) {
for(String s:str) {
System.out.println(s);
}
}
public static void main(String[] args) {
print(new String[] {"sdf", "sfd","sdff"});
}
}
4.调用方法是如果即可以和固定参数方法匹配也可以和可变长参数匹配,那么就调用固定参数方法:
package extensions;
public class ParamVar {
public static void print(String...str) {
for(String s:str) {
System.out.println(s);
}
}
public static void print(String str) {
System.out.println("------------------");
}
public static void main(String[] args) {
print("s");
}
}
5.调用的方法可以和两个可变长参数方法匹配,那么就会出现异常,编译就不能够通过
package extensions;
public class ParamVar {
public static void print(String...str) {
for(String s:str) {
System.out.println(s);
}
}
public static void print(String str, String...str1) {
System.out.println("------------------");
}
public static void main(String[] args) {
print("s");
}
}
6.一个方法只能有一个可变长参数,并且这个可变长参数必须放置在参数末尾;
7.看如下代码
package extensions;
public class ParamVar {
public static void print(String s, String... ss) {
for (int i = 0; i < ss.length; i++) {
System.out.println(ss[i]);
}
}
public static void main(String[] args) {
print("");
print("aaa");
print("aaa", "bbb");
}
}
输出结果:
bbb