概念:
jdk5.0出现的新特性。将同一个类中,多个方法名相同、参数类型相同、返回类型相同,仅仅是参数个数不同的方法抽取成一个方法,这种方法称为可变参数的方法
好处:
提高代码的重用性和维护性
语法:
修饰符 返回类型 方法名(参数类型… 参数名){
… …
}
注意:
1.>使用时,将可变长度的参数当做数组使用,等价于:
修饰符 返回类型 方法名(参数类型[] 参数名){
… …
}
(所以可变参数不可重载成一维数组)因为早期JDK在5.0以前实现可变传参是依靠String[]数组来实现,所以在声明参数时(String…strs)等价于 (String[] args)。
2.>用于方法重载声明时要注意,形参类型相同的数组之间也不会构成方法的重载
3.>用于方法重载作为参数时如何遍历
//遍历可变参数的方法和遍历数组类似
public void user(int[]....userids){
//遍历
for(int i=0;i<userids.length;i++){
System.out.println(userids[i])
}
}
--------------------------------------------- 分割线---------------------------------------------------------
声明用例:
/**
* ClassName:VarargsDemo
*
* @author: zhengkw
* @description: 测试
* @date: 20/02/03下午 4:55
* @version:
* @since: jdk 1.8
*/
public class VarargsDemo {
public static void main(String args[]) {
// 调用可变参数的方法
printMax(34, 3, 3, 2, 56.5);
printMax(new double[]{1, 2, 3});
}
public static void printMax( double... numbers) {
if (numbers.length == 0) {
System.out.println("没有参数传递");
return;
}
double result = numbers[0];
for (int i = 1; i < numbers.length; i++){
if (numbers[i] > result) {
result = numbers[i];
}
}
System.out.println("The max value is " + result);
}
}
使用特点:
1、可变参数的实参可以为0个或任意多个,当为0个参数时传入长度为0的数组:double[0]
2、可变参数的实参可以为一维数组类型
3、可变参数和普通类型参数 一起使用时,只能放在最后
4、一个参数列表中至多有一个可变参数!