可变参数

本文介绍了Java中的可变参数概念及其应用。通过实例演示了如何使用可变参数来简化多个数值的最大值查找过程,并对比了传统方法与使用可变参数方法的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

可变参数

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

/**
可变参数功能说明
*/
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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值