当前位置: 首页 > news >正文

java学习--可变参数

在 Java 中,可变参数(Varargs) 是一种特殊的参数类型,允许方法接收数量不确定的同类型参数。它的语法是在参数类型后添加 ...,本质是将传入的多个参数封装为一个数组,简化了多参数方法的定义。

基本语法

返回值类型 方法名(参数类型... 参数名) {// 方法体(参数名可作为数组使用)
}

例如,定义一个计算多个整数之和的方法:

public class VarargsDemo {// 可变参数方法:接收任意数量的int参数public static int sum(int... numbers) {int total = 0;for (int num : numbers) {  // 可变参数可作为数组遍历total += num;}return total;}public static void main(String[] args) {System.out.println(sum(1, 2));       // 传入2个参数,输出3System.out.println(sum(1, 2, 3, 4)); // 传入4个参数,输出10System.out.println(sum());           // 传入0个参数,输出0}
}

核心规则

  1. 参数类型必须相同可变参数只能接收同类型的参数(如 int... 只能接收 int 类型,String... 只能接收 String 类型)。

  2. 一个方法只能有一个可变参数                                                                                                且必须放在参数列表的最后一位(避免参数歧义)。

        ✅ 正确示例:

public void method(String name, int... ages) { ... } // 可变参数在最后

        ❌ 错误示例:

public void method(int... ages, String name) { ... } // 可变参数不在最后(编译报错)
public void method(int... a, String... b) { ... }    // 多个可变参数(编译报错)

        3.可变参数可兼容数组

        调用方法时,既可以传入零散的参数,也可以直接传入一个同类型的数组:

int[] arr = {1, 2, 3};
System.out.println(sum(arr)); // 等价于 sum(1, 2, 3),输出6

        4.长度可以为 0

         允许不传入任何参数(此时可变参数数组长度为 0)。

应用场景

  1. 简化多参数方法定义避免重载多个参数数量不同的方法(如 sum(int a)sum(int a, int b) 等),用一个可变参数方法即可覆盖所有情况。

  2. 日志打印、工具类等场景例如 System.out.printf(String format, Object... args) 就是典型的可变参数应用,支持任意数量的格式化参数。

  3. 动态参数传递在需要接收不确定数量输入的场景(如计算平均值、拼接字符串)中非常实用:

    // 拼接多个字符串
    public static String join(String... parts) {StringBuilder sb = new StringBuilder();for (String part : parts) {sb.append(part);}return sb.toString();
    }// 调用
    join("Hello", " ", "World"); // 输出 "Hello World"
    

注意事项

  • 避免与重载冲突:如果存在重载方法,且参数列表可能与可变参数混淆,编译器可能无法确定调用哪个方法。例如:

    public void test(int a) { ... }
    public void test(int... a) { ... }test(1); // 编译报错:调用不明确(既匹配单个int,也匹配可变参数)
    
  • 性能考量:可变参数本质是数组,每次调用都会创建一个新数组(除非传入已有的数组),频繁调用可能带来微小的性能开销(通常可忽略)。

  • 不要过度使用:如果参数数量固定(如 2-3 个),直接定义明确的参数列表(如 add(int a, int b))更清晰,避免滥用可变参数导致代码可读性下降。

总结

可变参数是 Java 5 引入的语法糖,通过 类型... 参数名 实现,本质是数组的简化写法。它的核心价值是简化多参数方法的定义和调用,尤其适合参数数量不确定的场景,但需遵守 “只能有一个、放在最后” 的规则,避免与其他参数冲突。

http://www.dtcms.com/a/577597.html

相关文章:

  • 相序诊断,快速响应!安科瑞户用光储防逆流无线电能表,破解您的安装难题,安全防逆流。
  • FPGA核心约束类型与语法
  • 给网站做网络安全的报价wordpress直播
  • 零基础从头教学Linux(Day 60)
  • .NET Core WebAPI 中 HTTP 请求方法详解:从新手到精通
  • Socket编程实战:从基础API到多线程服务器
  • Oracle Goldengate 同步过程的同步用户权限设置
  • Rust编程学习 - 如何理解Rust 语言提供了所有权、默认move 语义、借用、生命周期、内部可变性
  • 自学建立网站网络品牌推广费用
  • 卑鄙的网站开发公司网站地图页面模板
  • php网站如何编辑WordPress图片一行多张
  • 学Java第四十一天-------查找算法和排序算法
  • 从0到1学习Qt -- 信号和槽(二)
  • AI、闪购、造车……双十一的第十七年,京东、阿里、美团还有“新活”
  • IDEA不切换当前分支,实现跨分支合并的终极方案
  • 法考资源合集
  • Redis(四)——事务
  • 便宜的vps租用网站有哪些网站使用ftp
  • TestKeyDownBit函数和SetKeyDownBit函数和ClearKeyDownBit函数分析
  • RHCSA---权限管理
  • Flutter for HarmonyOS开发指南(二):混合开发架构与通信机制
  • 分布式分片执行原理解析
  • 自主建站全攻略:建站系统的选择指南与深度说明
  • 什么网站有做qq群排名的关键词优化价格
  • 网站内容怎么进行编写
  • SSM 房屋租赁系统
  • 网站排名优化服务公司福建省住房和城乡建设网站
  • 开发集成热门小游戏(vue+js)
  • Java-简单项目开发流程
  • 莱芜网站优化平台现在中型公司做网站用的是什么框架