zoukankan      html  css  js  c++  java
  • 巩固java(六)----java中可变参数方法(非常实用哦)

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

    import java.util.ArrayList;
    import java.util.List;
    
    
    public class VariableParameter {
    
    	//求若干个整型数中的最大值
        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) {
    		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));  //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

    从上面代码可以看出:

         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);
    
    	}
    
    }
    运行结果:

    2

    由此可以看出:

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


    继续:

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

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





    
    


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Word转pdf
    jquery 中json数组的操作 增删改
    Js、Jquery定时执行(一次或者重复多次,取消重复)
    sql server 2008 (不允许保存更改,您所做的更改要求删除并重新创建以下表) 的解决办法
    C#中 ArrayList 的使用
    Jquery正则表达式公式
    C#判断字符串是否存在字母及字符串中字符的替换实例
    纳闷的EF异常:在提供程序连接上启动事务时出错
    C# WinForm获取当前路径汇总
    Entity Framwork 6 编译出错的问题(VS2012)
  • 原文地址:https://www.cnblogs.com/dingxiaoyue/p/4931759.html
Copyright © 2011-2022 走看看