【JavaSE成神之路】可变参数

简介: 哈喽,我是兔哥呀,今天就让我们继续这个JavaSE成神之路!这一节啊,咱们要学习的内容是Java的可变参数。

7e29fc93ce3d4f43f5f9180b60b27160.gif


1.什么是可变参数

首先来看下概念。


Java的可变参数指的是在方法中设置不定数量的参数。可变参数使得代码更加简洁,可以更好地处理参数的变化。


java允许将同一个类中多个同名,同功能但参数个数不同的方法封装成一个方法。就可以通过可变参数实现。


传入的多个参数会被以数组的形式传入,也可以直接传入数组。


可变参数可以和普通参数一同传入,但是要确定可变参数放在最后。


比如:

public static boolean test(Object param1, Object... params)

特点

只能出现在参数列表的最后;

... 位于变量类型和变量名之间,前后有无空格都可以;

调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。


2.举一个栗子


可变参数使用一个省略号(...)来表示,它可以接受任意数量的参数,参数类型必须相同。 例如:

public static int sum(int... nums) {
    int sum = 0;
    for (int num: nums) {
        sum += num;
    }
    return sum;
}

上面的例子中,sum()方法接受任意数量的int类型参数,然后将它们相加,最后返回总和。 可以使用以下方式调用sum()方法:

sum(1, 2, 3);
sum(1, 2, 3, 4, 5);
sum(1, 2, 3, 4, 5, 6, 7, 8, 9);

可变参数可以用于实现可变长度的参数列表,可以接受任意数量的参数,而不必指定参数的个数。

怎么样,神奇吧。

3. 需要注意的点

  1. Java可变参数只能放在参数列表的最后一位,不能放在其他参数前面。
  2. Java可变参数只能有一个,不能有多个。

4. 思考题

上面我们对可变参数的定义为:在方法中设置不定数量的参数,传入的多个参数会被以数组的形式传入,也可以直接传入数组。

假如有一个方法长这样:

public static boolean test(Object... params)

当我调用的时候,传入的值就是null,那么会被解析成数组吗?


答案:

可变参数的核心是将参数封装为数组,但是传入null时并不是只含有一个null元素的数组,而是null。

可变参数方便调用者传入不固定数量的参数,且不需要在前面非常不优雅的构造数组对象。

相关文章
|
人工智能 Cloud Native 大数据
现代后端技术发展趋势与应用前景
随着信息技术的快速发展,现代后端技术在不断演进和创新。本文将探讨现代后端技术的发展趋势和应用前景,并深入分析其中的关键技术和未来发展方向。从云原生、大数据、微服务架构到人工智能等多个方面展开讨论,展示了后端技术在不断推动数字化转型和业务创新中的重要作用。
|
12月前
|
人工智能 自然语言处理 语音技术
Ultravox:端到端多模态大模型,能直接理解文本和语音内容,无需依赖语音识别
Ultravox是一款端到端的多模态大模型,能够直接理解文本和人类语音,无需依赖单独的语音识别阶段。该模型通过多模态投影器技术将音频数据转换为高维空间表示,显著提高了处理速度和响应时间。Ultravox具备实时语音理解、多模态交互、低成本部署等主要功能,适用于智能客服、虚拟助手、语言学习等多个应用场景。
759 14
Ultravox:端到端多模态大模型,能直接理解文本和语音内容,无需依赖语音识别
|
JavaScript Java 测试技术
基于SpringBoot+Vue的图书管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的图书管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
356 1
|
SQL Java 数据库连接
快速搭建SSM项目【最全教程】~令狐小哥版
快速搭建SSM项目【最全教程】~令狐小哥版
843 1
|
Linux Perl
在Linux中,如何停止正在运行的进程?
在Linux中,如何停止正在运行的进程?
|
数据采集 人工智能 算法
你要牢记的四个常用AI提示词框架:ICIO、CRISPE、BROKE、RASCEF,有助于获取更加稳定和高质量的内容
你要牢记的四个常用AI提示词框架:ICIO、CRISPE、BROKE、RASCEF,有助于获取更加稳定和高质量的内容
|
Java Linux Go
知识分享之Golang——Bleve中提供的各类搜索方法(一)
知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。 知识分享系列目前包含Java、Golang、Linux、Docker等等。
418 0
知识分享之Golang——Bleve中提供的各类搜索方法(一)
|
SQL 安全 关系型数据库
|
JavaScript 测试技术 开发工具
vue的自动化测试详解(三)
vue的自动化测试详解
324 0
vue的自动化测试详解(三)
|
设计模式 网络协议 程序员
没项目经历的安酱,连低耦合高内聚都不懂...
没项目经历的安酱,连低耦合高内聚都不懂...
没项目经历的安酱,连低耦合高内聚都不懂...