滚雪球学Java(36):玩转Java方法重载和可变参数,让你的代码更灵活

简介: 【5月更文挑战第11天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!


前言

  在Java中,方法重载是一种简单而常见的技术,它允许我们定义拥有相同名称但参数列表不同的多个方法。这使得我们能够以更加灵活的方式实现相同的功能,同时也方便了代码的维护与扩展。

  除此之外,Java还提供了可变参数的特性,可以在参数数量不确定的情况下调用方法,这极大地增强了代码的通用性和灵活性。

  本文将介绍Java方法重载和可变参数的概念和用法,通过代码实例演示其使用方法,帮助读者更好地掌握这两个重要的Java编程技术。

摘要

本文将主要介绍以下内容:

  • 方法重载的概念和用法
  • 可变参数的概念和用法
  • 代码实例演示

正文

方法重载的概念和用法

  方法重载是指在一个类中定义多个方法,它们具有相同的方法名但参数列表不同。在Java中,方法重载可以使用不同的参数数量、类型或顺序进行定义。

下面是一个简单的例子:

public class Calculator {
   
   
    public int add(int a, int b) {
   
   
        return a + b;
    }

    public int add(int a, int b, int c) {
   
   
        return a + b + c;
    }
}

  在这个例子中,我们定义了一个名为add的方法,但它带有不同数量参数的不同版本。这使得我们能够以更加灵活的方式实现相同的功能。

  Java编译器会根据调用时的参数类型、数量和顺序自动选择合适的版本。比如:

Calculator calculator = new Calculator();
int sum1 = calculator.add(10, 20); // 调用 add(int a, int b) 方法
int sum2 = calculator.add(10, 20, 30); // 调用 add(int a, int b, int c) 方法

  需要注意的是,在方法重载中,方法名相同但是参数列表不同的方法对于编译器而言是不同的。因此,重载的方法应该被视为完全不同的方法,与彼此之间没有任何联系。

可变参数的概念和用法

  可变参数是指在方法中定义一个参数,其个数可以是任意的,Java编译器将其视为一个数组。在Java中,可变参数使用三个点(...)来表示。

下面是一个简单的例子:

public class Calculator {
   
   
    public int add(int... numbers) {
   
   
        int sum = 0;
        for (int number : numbers) {
   
   
            sum += number;
        }
        return sum;
    }
}

  在这个例子中,我们定义了一个名为add的方法,它带有一个可变参数numbers,可以接收任意数量的整型参数。在方法体中,我们使用循环计算了所有参数的和。

  我们可以在调用时将任意数量的参数传递给该方法,如下所示:

Calculator calculator = new Calculator();
int sum1 = calculator.add(10, 20); // 30
int sum2 = calculator.add(10, 20, 30); // 60
int sum3 = calculator.add(10, 20, 30, 40); // 100

  在调用时,我们可以向可变参数传递任意多个参数,编译器会自动将这些参数封装为一个数组,作为实际参数传递给方法。

  需要注意的是,可变参数必须是方法的最后一个参数。因为在调用时,Java编译器会优先匹配之前的参数,并将剩余的参数封装为一个数组,作为可变参数传递给方法。

代码实例演示

下面是一个完整的示例,演示了Java方法重载和可变参数的用法。

public class Calculator {
   
   
    public int add(int a, int b) {
   
   
        return a + b;
    }

    public int add(int a, int b, int c) {
   
   
        return a + b + c;
    }

    public int add(int... numbers) {
   
   
        int sum = 0;
        for (int number : numbers) {
   
   
            sum += number;
        }
        return sum;
    }

    public static void main(String[] args) {
   
   
        Calculator calculator = new Calculator();
        int sum1 = calculator.add(10, 20); // 调用 add(int a, int b) 方法
        int sum2 = calculator.add(10, 20, 30); // 调用 add(int a, int b, int c) 方法
        int sum3 = calculator.add(10, 20, 30, 40); // 调用 add(int... numbers) 方法
        System.out.println("sum1 = " + sum1); // sum1 = 30
        System.out.println("sum2 = " + sum2); // sum2 = 60
        System.out.println("sum3 = " + sum3); // sum3 = 100
    }
}

  在这个示例中,我们定义了三个重载的方法add,分别接收不同数量的参数。在main方法中,我们分别调用了三个方法,并打印结果。由于Java编译器会自动匹配方法的参数类型和数量,在调用时我们不需要显式地指定使用哪个版本的方法。

小结

  方法重载和可变参数是Java中常见的编程技巧,能够使我们以更加优雅和灵活的方式实现代码功能。重载的方法应该被视为完全不同的方法,不能互相调用或者继承。可变参数必须是方法的最后一个参数,其个数可以是任意的。在调用时,编译器会自动将可变参数封装为数组,作为实际参数传递给方法。

附录源码

  如上涉及所有源码均已上传同步在 Gitee,提供给同学们一对一参考学习,辅助你更迅速的掌握。

☀️建议/推荐你


  无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学Java」,bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门Java编程,就像滚雪球一样,越滚越大,指数级提升。

目录
相关文章
|
2月前
|
Java 开发工具
【Azure Storage Account】Java Code访问Storage Account File Share的上传和下载代码示例
本文介绍如何使用Java通过azure-storage-file-share SDK实现Azure文件共享的上传下载。包含依赖引入、客户端创建及完整示例代码,助你快速集成Azure File Share功能。
377 5
|
2月前
|
Java 数据处理 API
为什么你的Java代码应该多用Stream?从循环到声明式的思维转变
为什么你的Java代码应该多用Stream?从循环到声明式的思维转变
265 115
|
2月前
|
安全 Java 编译器
为什么你的Java代码需要泛型?类型安全的艺术
为什么你的Java代码需要泛型?类型安全的艺术
189 98
|
2月前
|
Java 编译器 API
java最新版和java8的区别,用代码展示
java最新版和java8的区别,用代码展示
293 43
|
2月前
|
Java 编译器 Go
【Java】(5)方法的概念、方法的调用、方法重载、构造方法的创建
Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被创建,在其他地方被引用方法的优点使程序变得更简短而清晰。有利于程序维护。可以提高程序开发的效率。提高了代码的重用性。方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如:addPerson。这种就属于驼峰写法下划线可能出现在 JUnit 测试方法名称中用以分隔名称的逻辑组件。
217 4
|
2月前
|
安全 Java 容器
告别空指针噩梦:Optional让Java代码更优雅
告别空指针噩梦:Optional让Java代码更优雅
391 94
|
2月前
|
安全 Java 容器
告别繁琐判空:Optional让你的Java代码更优雅
告别繁琐判空:Optional让你的Java代码更优雅
|
3月前
|
IDE Java 关系型数据库
Java 初学者学习路线(含代码示例)
本教程为Java初学者设计,涵盖基础语法、面向对象、集合、异常处理、文件操作、多线程、JDBC、Servlet及MyBatis等内容,每阶段配核心代码示例,强调动手实践,助你循序渐进掌握Java编程。
481 3
|
2月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
196 1
|
2月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
221 1