可变参数
首先,假设出现一种情况,需要取两个数中的最大值。
我们可以写一个方法:
/**
可变参数功能说明
*/
public class VariableDemo {
public static void main(String[] args){
int num1 = 10;
int num2 = 5;
int mx = max(num1,num2);
System.out.println("在" + num1 + "和" + num2 + "中最大值是" + mx);
}
/**
取两个整型中的最大值
*/
public static int max(int num1, int num2){
return num1 >= num2 ? num1 : num2;
}
}
现在我想要取三个数中的最大值,那么程序就要新加一个方法:
/**
可变参数功能说明
*/
public class VariableDemo {
public static void main(String[] args){
int num1 = 10;
int num2 = 5;
int num3 = 20;
int mx = max(num1, num2, num3);
System.out.println("在" + num1 + " , " + num2 + "和" + num3 + "中最大值是" + mx);
}
/**
取两个整型中的最大值
*/
public static int max(int num1, int num2){
return num1 >= num2 ? num1 : num2;
}
/**
取三个整型中的最大值
*/
public static int max(int num1, int num2, int num3){
int temp = num1 >= num2 ? num1: num2;
return temp >= num3 ? temp : num3;
}
}
这样写,也可以满足要求。如果我想取4个整数或者5个整数中的最大值,那么就要再写方法。
或者传递一个数组给max()方法,但是数组的新建和遍历都比较麻烦。
这时候我们就可以用可变参数解决问题:
一个方法在调用的时候必须根据其规定的参数传递参数,规定了5个,就必须传递五个,但是在JDK5.0之后,为了让方法更加具有灵活性,使用了可变参数,在调用方法的时候可以任意多的传递参数。
可变参数的定义方法:
返回值类型 方法名称(类型...参数名称){}
eg:
int max(int... num){}
此时,num就相当于一个数组对象
例子如下:
/**
可变参数功能说明
*/
public class VariableDemo {
public static void main(String[] args){
int num1 = 10;
int num2 = 5;
int num3 = 20;
//int mx = max(num1, num2);
//System.out.println("在" + num1 + "和" + num2 + "中最大值是" + mx);
//int mx = max(num1, num2, num3);
//System.out.println("在" + num1 + " , " + num2 + "和" + num3 + "中最大值是" + mx);
int mx = max(17, 26, 23, 94, 105);
System.out.println("最大值是"+mx);
}
/**
取两个整型中的最大值
*/
public static int max(int num1, int num2){
return num1 >= num2 ? num1 : num2;
}
/**
取三个整型中的最大值
*/
public static int max(int num1, int num2, int num3){
int temp = num1 >= num2 ? num1: num2;
return temp >= num3 ? temp : num3;
}
/**
采用可变数组取整型中的最大值
*/
public static int max(int... num){
int max = num[0];
for(int n : num) {
if(n > max){
max = n;
}
}
return max;
}
}