??? 当你不知道传多少个参数的时候怎么办 !
可变长参数来啦~
尤其是在重载的时候,一个方法因为参数不同会写很多个就很难搞!
就像这样的尴尬情况,写了一大堆方法,造成代码的冗余相当相当的严重
public void method(){}
public void method(int i){}
public void method(int i,double d){}
public void method(int i,float f){}
public void method(int i,boolean b){}
public void method(int i,byte B){}
官方解释:在JDK1.5开始,java支持传递同类型的可变参数给一个方法
在方法声明中,在指定参数类型后加一个省略号 (…)
一个方法中只能指定一个可变参数,他必须是方法的最后一个参数,任何普通参数必须在他前面声明,简言之就是这样滴:
public void method(int i,byte B, double... numbers){}
整个实际栗子来康康
public class Test {
public static void main(String[] args) {
Test test1 = new Test();
// 调用方法,上传随意多个参数
test1.method(1,2,3,4,5,6);
}
// 定义了有N个int型参数的方法
public void method(int... numbers){
System.out.println("第1个参数"+numbers[0]);
System.out.println("第2个参数"+numbers[1]);
System.out.println("第3个参数"+numbers[2]);
System.out.println("第4个参数"+numbers[3]);
System.out.println("第5个参数"+numbers[4]);
System.out.println("第6个参数"+numbers[5]);
}
}
结果是:
第1个参数1
第2个参数2
第3个参数3
第4个参数4
第5个参数5
第6个参数6
再来个小栗子:
public class demo1 {
public static void main(String[] args) {
printMax(5.6,4.8,1.0,2.1,3.3,5.1,6.6);
// 可边长参数的本质就是一个数组
printMax(new double[]{5.6,4.8,1.0,2.1,3.3,5.1,6.6});
}
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 MaxValue is" +result );
}
}
结果是:
The MaxValue is 6.6
The MaxValue is 6.6
All in all :
可变长参数可以理解为是一个 数组,里面的个数是不确定滴,但是里面的类型必须得是一样的,尤其是想传多个类型不同的参数时,可变长参数必须放在最后。
All in all :
可变长参数可以理解为是一个 数组,里面的个数是不确定滴,但是里面的类型必须得是一样的,尤其是想传多个类型不同的参数时,可变长参数必须放在最后。