方法的重载与可变参数

方法的重载与可变参数

在java 中允许同一个类中, 多个同名方法的存在, 但要求【形参列表】不一致!这个和【返回值】无关。

重载方法能让我们更好更方便的起名字。

//两个整数的和
plus(int n1, int n2)           
//一个整数, 一个 double 的和
plus(int n1, double n2)     
//一个 double ,一个 Int 和
plus(double n2, int n1)     
//三个 int 的和
plus(int n1, int n2,int n3)    

构成重载的三个要素:

  • 方法名必须一致。
  • 参数不一致,有两层含义第一是参数的数量不一致,第二层含义是:参数的类型不一致,【参数的名字一样不一样都行】。
  • 返回值无要求。

我们确实有这种需求,都是加法,但是需要的参数不同,我们有必要去为了它而创建一个新的方法名字吗?

plus1,plus2,plus3... 当然这样做也没有错,但是使用重载会让你的代码更加的优雅一点。

思考:

有这样一个方法:public void fun(int a,int b);下边哪些方法和它重载。

- public void fun(int x,int y);              //不是
- public void fun(int x,int y,int z);        //是
- public void fun(int a,int b,int c);        //是
- public int fun(int a,int b);               //不是
- public int fun(int a,int b,int c);         //是

【作业】

写两个重载的方法max()

  • 一个方法求两个数的最大值。
  • 一个方法求三个数的最大值,思路:先求出第一个和第二的最大值,再拿最大值和第三个比较
public class Max {
//方法重载
    public int max(int a, int b){
        if(a > b){
            return a;
        }else {
            return b;
        }
    }
    public int max(int a, int b, int c){
        if (a > b && a > c){
            return a;
        }else if (b > a && b > c){
            return b;
        }else {
            return c;
        }
    }

    public static void main(String[] args) {
        Max max = new Max();
        System.out.println(max.max(18,10));
        System.out.println(max.max(15,8,23));
    }
}

18
23

Process finished with exit code 0

可变参数

有的时候我们是否有这种需求,我们想求几个数之和。

我们想写成 plus(1,2,3,4,....) 这个样子。

java中还真的有,这种参数可以随心所欲去传递的参数叫做【可变参数】。

【语法】:访问修饰符 返回类型 方法名(数据类型... 形参名) {}

举个例子:

//1.int...表示接受的是可变参数,类型是int,即可以接收多个int(0-多)
//2.使用可变参数时,可以当做数组来使用即nums可以当做数组
//3.遍历nums求和即可
public int sum(int... nums){
    int result=0;
    // 可变参的本质其实是个数组
    for(inti=0;i<nums.length;i++){
        result += nums[i];
    }
    return result;
}

你一旦定义了可变参数,它居然可以这么随心所欲的调用:

xxx.sum(1);
xxx.sum(1,2);
xxx.sum(1,32,3);

你完全没必要为每一种求和方法提供一个重载的方法。

本质:

就是将你传入的参数封装成了一个数组,他和可变参数是一样的,只是数组你需要自己去定义。

public int sum(int[] nums){
    int result=0;
    // 可变参的本质其实是个数组
    for(inti=0;i<nums.length;i++){
        result += nums[i];
    }
    return result;
}

注意点:

一个方法的形参列表最多只能出现一个可变参数。

public int sum(int... nums,int... nums2);  // 不可以

可变参数可以和普通参数放在一起,但是可变参数必须放在最后。

public int sum(int first,int... nums2);   // 可以
public int sum(int... nums2,int last);    // 不可以
public class Max {
   //可变参数
    public int max(int b,int ...nums){
        int result = 0;
        for (int i = 0; i < nums.length; i++) {
            result += nums[i];
        }
        return result;
    }

    public static void main(String[] args) {
        Max max = new Max();
        System.out.println(max.max(1,2,3));

    }
}

6

Process finished with exit code 0
posted @   追风的羊  阅读(96)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示