Java从JDK1.5以后,允许定义形参长度可变的参数从而允许为方法指定数量不确定的形参。如果在定义方法时在最后一个形参类型后增加3个点即(...);则表明该形参可以接受多个参数值,多个参数值会被当做数组传入。
案例:
public static void main(String[] args) {
// TODO Auto-generated method stub
par("张", "陈", "刘");
}
public static void par(String... strings) {
for (String s : strings) {
System.out.print(s);
}
}
注意项:
使用过程中要注意的几点:
1、调用时,如果同时能匹配固定参数和可变长参数的方法,会优先匹配固定参数方法。
2、如果能同时和2个包含可变参数的方法想匹配,则编译会报错,因为编译器不知道该调用哪个方法。
3、一个方法只能有一个可变参数,且可变参数应为最后一个参数。
与String[] args的区别
String args[] 是一个数组作为参数。
String[] args 和 String… args 本质上不没有什么区别,String… args 最后还是转化成String[] args 来做的
当一个方法定义中有String… args形参时,实参传递的参数个数可以是少于最大个数的任意个,可以不传 参数。但是这样子定义在方便的同时也是有其他影响的,那就是String…args只能定义在形参的最后一个参数,而String[] args就没有这样的限制了,所以看各种的需求定义。
如下体现了两种形式的不同
public static void test(String [] aaa){
}
public static void test2(String ... bbb){
}
public static void main(String[] args) {
test(new String[]{"log message 1 "});
test(new String[]{"log message2", " log message3"});
test(new String[]{"log message4","log message5","log message6"});
test2(new String[]{"log message 1 "});
test2("log message2", " log message3");
test2("log message4","log message5","log message6");
}
参考文章,感谢作者!
https://blog.csdn.net/weixin_44100514/article/details/88573869
https://www.cnblogs.com/blogzcc/p/11076073.html