java提供了可变参数的方法,即方法的参数个数可以不确定,用"..."定义。
- import java.util.ArrayList;
- import java.util.List;
-
-
- public class VariableParameter {
-
-
- public int getMax(int... items){
-
- int max = Integer.MIN_VALUE;
- for(int item : items){
- max = item > max? item : max;
- }
- return max;
- }
-
- public int getLagerNum(int number,int... items){
- int sum = 0;
- for(int item : items){
- if(item > number){
- sum++;
- }
- }
- return sum;
- }
-
- public static void main(String[] args) {
- VariableParameter vp = new VariableParameter();
- System.out.println("最大值:"+vp.getMax());
- System.out.println("最大值:"+vp.getMax(2,1,4,7,2,-1,3,3));
- System.out.println("最大值:"+vp.getMax(-1,4,5,0,1));
-
- System.out.println("比number大的数的个数:"+vp.getLagerNum(9, 1,11,5,14,-1,9,21));
- int a[] = new int[] {1,11,5,14,-1,9,21};
- System.out.println("比number大的数的个数:"+vp.getLagerNum(9,a));
-
- }
-
- }
运行结果如下:
- 最大值:-2147483648
- 最大值:7
- 最大值:5
- 比number大的数的个数:3
- 比number大的数的个数:3
从上面代码可以看出:
1.在方法中定义可变参数后,我们可以像操作数组一样操作该参数;
2.如果该方法除了可变参数还有其它的参数,可变参数必须放到最后;
3.调用使用了可变参数的方法时:
a.可以不写参数,即传入空参;
b.可以直接在里边写入参数,参数间用逗号隔开;
c.可以传入一个数组;
继续往下看:
- public class VariableParameter {
-
- public void comp(int... items){
- System.out.println("1");
- }
-
- public void comp(int item1,int item2){
- System.out.println("2");
- }
-
- public static void main(String[] args) {
- VariableParameter vp = new VariableParameter();
- vp.comp(1, 2);
-
- }
-
- }
运行结果:
由此可以看出:
4.拥有可变参数的方法可以被重载,在被调用时,如果能匹配到参数定长的方法则优先调用参数定长的方法。
继续:
- public class VariableParameter {
-
- public void comp(int... items){
- System.out.println("1");
- }
-
- public void comp(int[] items){
- System.out.println("2");
- }
-
- public static void main(String[] args) {
-
- }
-
- }
当试图使用数组作为参数去实现重载时,会报错,说明可变参数与数组冲突,但是:
- public class VariableParameter {
-
- public void comp(int[] items){
- System.out.println("2");
- }
-
- public static void main(String[] args) {
- VariableParameter vp = new VariableParameter();
- vp.comp(1,2,3,4);
- }
-
- }
如果定义一个参数为数组的方法,像调用可变参数的方法一样调用它是会报错,说明可变参数并不是一个数组,由此我们可以总结出:
5:可变参数可以兼容数组参数,但数组参数无法兼容可变参数。