码迷,mamicode.com
首页 > 编程语言 > 详细

java中的可变参数

时间:2019-10-13 20:32:56      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:sum   数组   oid   The   java   argument   最大   参数   max   

    1. 在方法中定义可变参数后,我们可以像操作数组一样操作该参数;

    2. 如果该方法除了可变参数还有其它的参数,可变参数必须放到最后;

    3. 调用使用了可变参数的方法时:
      a. 可以不写参数,即传入空参;
      b. 可以直接在里边写入参数,参数间用逗号隔开;
      c. 可以传入一个数组;

public class Demo {

    //求若干个整型数中的最大值
    public int getMax(int... items){       //定义可变参数items

        int max = Integer.MIN_VALUE;       //次数为int能表示的最小值,值为-2147483648
        for(int item : items){
            max = item > max? item : max;    //取大值
        }
        return max;
    }
    //返回比number大的数的个数
    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) {
        Demo vp = new Demo();
        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));  //9为number,后边的是items
        int a[] = new int[] {1,11,5,14,-1,9,21};
        System.out.println("比number大的数的个数:"+vp.getLagerNum(9,a));     //items也可以用数组替代

    }

}
/*
最大值:-2147483648
最大值:7
最大值:5
比number大的数的个数:3
比number大的数的个数:3

 

 

4.拥有可变参数的方法可以被重载,在被调用时,如果能匹配到参数定长的方法则优先调用参数定长的方法。

public class Demo {  

    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) {  
        Demo vp = new Demo();  
        vp.comp(1, 2);  

    }  

} 
/*
2
*/

 

5.可变参数可以兼容数组参数,但数组参数无法兼容可变参数。

当试图使用数组作为参数去实现重载时,会报错,说明可变参数与数组冲突:如下

public class Demo {  

    public void comp(int... items){  
        System.out.println("1");  
    }  

    public void comp(int[] items){      //会报错:Duplicate method comp(int[]) in type VariableParameter  
        System.out.println("2");  
    }  

    public static void main(String[] args) {  

    }  

}


--------------------------------------------------------------------------------------------------------------------------------





public class Demo {  

    public void comp(int[] items){      //会报错:Duplicate method comp(int[]) in type VariableParameter  
        System.out.println("2");  
    }  

    public static void main(String[] args) {  
        Demo vp = new Demo();  
        vp.comp(1,2,3,4);    //The method comp(int[]) in the type VariableParameter is not applicable for the arguments (int, int, int, int)  
    }  

}  

 

 如果定义一个参数为数组的方法,像调用可变参数的方法一样调用它是会报错,说明可变参数并不是一个数组,

 

java中的可变参数

标签:sum   数组   oid   The   java   argument   最大   参数   max   

原文地址:https://www.cnblogs.com/hsh5201314/p/11668129.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!