java中可变参数方法

来源:互联网 发布:创度软件联系方式 编辑:程序博客网 时间:2024/06/06 00:55

java提供了可变参数的方法,即方法的参数个数可以不确定,用"..."定义。

[java] view plain copy
  1. import java.util.ArrayList;  
  2. import java.util.List;  
  3.   
  4.   
  5. public class VariableParameter {  
  6.   
  7.     //求若干个整型数中的最大值  
  8.     public int getMax(int... items){       //定义可变参数items  
  9.       
  10.         int max = Integer.MIN_VALUE;       //次数为int能表示的最小值,值为-2147483648  
  11.         for(int item : items){  
  12.             max = item > max? item : max;    //取大值  
  13.         }  
  14.         return max;  
  15.     }  
  16.     //返回比number大的数的个数  
  17.     public int getLagerNum(int number,int... items){  //若除了可变长参数还有其它参数,可变长参数一定要放在最后  
  18.         int sum = 0;  
  19.         for(int item : items){  
  20.             if(item > number){  
  21.                 sum++;  
  22.             }  
  23.         }  
  24.         return sum;  
  25.     }  
  26.       
  27.     public static void main(String[] args) {  
  28.         VariableParameter vp = new VariableParameter();  
  29.         System.out.println("最大值:"+vp.getMax());  //可以不写参数  
  30.         System.out.println("最大值:"+vp.getMax(2,1,4,7,2,-1,3,3));  //可以在参数中直接写入若干个参数  
  31.         System.out.println("最大值:"+vp.getMax(-1,4,5,0,1));        //可以在参数中直接写入若干个参数  
  32.           
  33.         System.out.println("比number大的数的个数:"+vp.getLagerNum(91,11,5,14,-1,9,21));  //9为number,后边的是items  
  34.         int a[] = new int[] {1,11,5,14,-1,9,21};  
  35.         System.out.println("比number大的数的个数:"+vp.getLagerNum(9,a));     //items也可以用数组替代  
  36.           
  37.     }  
  38.   
  39. }  
运行结果如下:

[plain] view plain copy
  1. 最大值:-2147483648  
  2. 最大值:7  
  3. 最大值:5  
  4. 比number大的数的个数:3  
  5. 比number大的数的个数:3  

从上面代码可以看出:

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

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

     3.调用使用了可变参数的方法时:

              a.可以不写参数,即传入空参;

              b.可以直接在里边写入参数,参数间用逗号隔开;

              c.可以传入一个数组;


继续往下看:

[java] view plain copy
  1. public class VariableParameter {  
  2.   
  3.     public void comp(int... items){  
  4.         System.out.println("1");  
  5.     }  
  6.       
  7.     public void comp(int item1,int item2){  
  8.         System.out.println("2");  
  9.     }  
  10.       
  11.     public static void main(String[] args) {  
  12.         VariableParameter vp = new VariableParameter();  
  13.         vp.comp(12);  
  14.   
  15.     }  
  16.   
  17. }  
运行结果:

[plain] view plain copy
  1. 2  

由此可以看出:

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


继续:

[java] view plain copy
  1. public class VariableParameter {  
  2.   
  3.     public void comp(int... items){  
  4.         System.out.println("1");  
  5.     }  
  6.       
  7.     public void comp(int[] items){      //会报错:Duplicate method comp(int[]) in type VariableParameter  
  8.         System.out.println("2");  
  9.     }  
  10.       
  11.     public static void main(String[] args) {  
  12.   
  13.     }  
  14.   
  15. }  

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

[java] view plain copy
  1. public class VariableParameter {  
  2.   
  3.     public void comp(int[] items){      //会报错:Duplicate method comp(int[]) in type VariableParameter  
  4.         System.out.println("2");  
  5.     }  
  6.       
  7.     public static void main(String[] args) {  
  8.         VariableParameter vp = new VariableParameter();  
  9.         vp.comp(1,2,3,4);    //The method comp(int[]) in the type VariableParameter is not applicable for the arguments (int, int, int, int)  
  10.     }  
  11.   
  12. }  
如果定义一个参数为数组的方法,像调用可变参数的方法一样调用它是会报错,说明可变参数并不是一个数组,由此我们可以总结出:

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

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 学士帽戴不稳怎么办 我不想当部长怎么办 把小三打住院会怎么办 汽车ems认证失败怎么办 工行介质失败是怎么办 校园网翻不了墙怎么办 xp网站证书错误怎么办 wifi一直掉线怎么办 太累了头晕怎么办 大专证没有认证怎么办 学生信息怎么办忘了 中专对口大专考不上怎么办 学历认证待校对怎么办 毕业证上没照片怎么办 怎么办学历学位认证证明 教育部学历学位认证怎么办 兵役登记被注册怎么办 学信网手机号忘了怎么办 注销手机号了学信网怎么办 学信网手机换了怎么办 学籍不在籍结业怎么办 电教馆的幼师证怎么办 中考不够建档线怎么办 医保漏交一年怎么办 南通图书馆怎么办饭卡 工商银行卡坏了怎么办 北京一卡通丢了怎么办 甲状腺右叶结节怎么办 ca证书掉了怎么办 地税ca丢了怎么办 南京乘车卡丢失怎么办 老干妈瓶盖打不开怎么办 金陵图书馆书丢失怎么办 幼师资格证丢了怎么办 双证毕业没有怎么办 幼师面试没特长怎么办 资格证到6年没换怎么办 中央巡视组走了怎么办 校园招聘学生违约怎么办 应届毕业生考上公务员档案怎么办 移动硬盘弹不出来怎么办