可变参数

来源:互联网 发布:淘宝怎么联系客服啊 编辑:程序博客网 时间:2024/05/21 15:43

可变参数

首先,假设出现一种情况,需要取两个数中的最大值。
我们可以写一个方法:

/**可变参数功能说明*/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;    }}
0 0
原创粉丝点击