关于可变参数的笔记

一、核心概述

可变参数(Variable Arguments)是 Java 5 引入的特性,允许方法接收任意数量的同类型参数,本质是语法糖,底层会自动转换为数组处理。

核心特点

● 方法参数列表中,可变参数只能有一个;

● 可变参数必须放在参数列表的最后一位;

● 调用方法时,可传入 0 个、1 个或多个同类型参数,也可直接传入数组。

二、基本语法

定义格式

// 格式:类型... 变量名(注意是三个点)

返回值类型 方法名(参数类型... 可变参数名) {

// 方法体(可变参数可当作数组使用)

}

简单示例

public class VarargsDemo {

// 定义可变参数方法:计算多个整数的和

public static int sum(int... nums) {

int total = 0;

// 可变参数 nums 本质是 int[] 数组,可通过增强 for 遍历

for (int num : nums) {

total += num;

}

return total;

}

public static void main(String[] args) {

// 调用方式1:传入 0 个参数

System.out.println(sum()); // 输出:0

// 调用方式2:传入 1 个参数

System.out.println(sum(5)); // 输出:5

// 调用方式3:传入多个参数

System.out.println(sum(1, 2, 3)); // 输出:6

// 调用方式4:传入数组(直接兼容数组)

int[] arr = {4, 5, 6};

System.out.println(sum(arr)); // 输出:15

}

}

三、关键注意事项

1. 可变参数的位置:必须是参数列表的最后一个,不能放在其他参数前面。

// 正确:可变参数在最后

public static void printInfo(String name, int... scores) {}

// 错误:可变参数不在最后(编译报错)

// public static void printInfo(int... scores, String name) {}

2. 方法重载冲突:避免定义可能与可变参数产生歧义的重载方法。

// 冲突示例:调用 print(1,2) 时,无法确定调用哪个方法

public static void print(int... nums) {}

public static void print(int a, int b) {}

3. 空值处理:若传入 null 作为可变参数,需注意空指针异常(NPE)。

public static void main(String[] args) {

int[] arr = null;

sum(arr); // 不会报错,但方法内遍历 nums 时会抛 NPE

// sum(null); // 等价于上面,同样有风险

// 正确处理:方法内先判空

public static int sum(int... nums) {

if (nums == null) return 0; // 避免 NPE

int total = 0;

for (int num : nums) total += num;

return total;

}

}

4. 与数组的区别:可变参数是数组的“简化写法”,但定义和调用更灵活。

// 数组参数方法:调用时必须传入数组

public static int sumArr(int[] nums) {}

sumArr(new int[]{1,2,3}); // 必须显式创建数组

// 可变参数方法:调用时可直接传多个值(自动转数组)

sum(1,2,3); // 无需手动创建数组

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1207849.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EVOH九层共挤哪家好?2026安徽九层共挤吹膜厂家推荐盘点

EVOH九层共挤哪家好?2026安徽九层共挤吹膜厂家推荐。九层共挤吹膜技术是通过多个模头将单一或多种树脂熔化后共挤出成膜的工艺,无需黏合剂,避免了溶剂残留问题。其中EVOH(乙烯/乙烯醇共聚物)作为核心阻隔材料,凭…

如何实现远程访问?DeepSeek-R1 Web服务外网暴露方案

如何实现远程访问?DeepSeek-R1 Web服务外网暴露方案 你已经成功在本地服务器上跑起了 DeepSeek-R1-Distill-Qwen-1.5B 的 Web 服务,界面也打开了,输入提示词后模型能流畅输出数学推导、写 Python 脚本、甚至帮你理清复杂逻辑链——但问题来了…

2026年襄阳口碑装修团队深度评测与联系指南

在消费升级与品质生活需求日益凸显的今天,家庭装修已远不止于满足基本的居住功能,更是承载着人们对美好生活的向往与个性化审美的表达。然而,装修市场信息不对称、施工质量参差不齐、过程管理混乱等痛点长期困扰着广…

电商客服自动化实战:用gpt-oss-20b-WEBUI快速实现智能问答

电商客服自动化实战:用gpt-oss-20b-WEBUI快速实现智能问答 在电商运营中,客服响应速度与服务质量直接决定用户留存率和转化率。一家日均咨询量超5000次的中型服饰品牌曾向我们反馈:人工客服平均响应时间83秒,重复问题占比达67%&a…

YOLOv9镜像适合团队协作吗?落地经验分享

YOLOv9镜像适合团队协作吗?落地经验分享 在目标检测工程实践中,我们常面临一个尴尬现实:模型结构越先进,落地门槛反而越高。YOLOv9作为2024年提出的新型目标检测架构,凭借可编程梯度信息(PGI)和…

Qwen All-in-One日志审计:合规性记录部署指南

Qwen All-in-One日志审计:合规性记录部署指南 1. 为什么日志审计需要“智能记录”而不是“简单存档” 你有没有遇到过这样的情况:系统每天生成上万行日志,但真正出问题时,翻了半小时才找到那条关键报错?或者安全审计…

cv_unet_image-matting实战案例:社交媒体头像自动化生成流程

cv_unet_image-matting实战案例:社交媒体头像自动化生成流程 1. 为什么需要这个流程?——从手动修图到一键出图的转变 你有没有遇到过这样的场景:朋友临时要发一条朋友圈,急着换新头像,但手边只有一张带背景的自拍照…

实时操作系统中erase任务调度优化

以下是对您提供的技术博文进行 深度润色与结构重构后的版本 。本次优化严格遵循您的全部要求: ✅ 彻底去除AI痕迹,语言更贴近资深嵌入式工程师的自然表达 ✅ 摒弃模板化标题(如“引言”“总结”),全文以逻辑流驱动…

fft npainting lama正常关闭方式:Ctrl+C终止进程教程

FFT NPainting LaMa图像修复系统:正常关闭服务的正确方式 在使用FFT NPainting LaMa图像修复系统时,很多用户会遇到一个看似简单却容易被忽略的问题:如何安全、干净地停止正在运行的WebUI服务? 很多人习惯性地直接关闭终端窗口&a…

Arduino安装进阶技巧:自定义库路径配置方法详解

以下是对您提供的博文内容进行 深度润色与结构重构后的专业级技术文章 。全文已彻底去除AI痕迹,强化了人类专家口吻、实战经验沉淀与教学逻辑,同时严格遵循您的所有格式与风格要求(无模板化标题、无总结段、自然收尾、口语化但不失严谨、关…

Sambert在教育场景的应用:AI教师语音生成部署完整指南

Sambert在教育场景的应用:AI教师语音生成部署完整指南 1. 为什么教育场景特别需要AI语音教师 你有没有遇到过这样的情况:录一节10分钟的微课,光是反复重录语音就花了近一个小时?或者想给不同年级的学生准备差异化讲解音频&#…

verl多任务训练:共享模型结构的部署实践案例

verl多任务训练:共享模型结构的部署实践案例 1. verl 是什么?一个为LLM后训练而生的强化学习框架 你可能已经听说过用强化学习(RL)来优化大语言模型——比如让模型更听话、更安全、更符合人类偏好。但真正把 RL 落地到千卡级 LL…

用Glyph构建企业知识库,支持超长文档检索

用Glyph构建企业知识库,支持超长文档检索 在企业日常运营中,知识管理始终是个“看似简单、实则棘手”的难题:技术文档动辄上百页PDF,产品手册更新频繁,合同条款密密麻麻,会议纪要堆叠如山……当员工需要快…

Java毕设项目推荐-基于springboot的术后护工服务管理便捷服务系统【附源码+文档,调试定制服务】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

Qwen2.5-0.5B与DeepSeek-Coder对比:代码生成评测

Qwen2.5-0.5B与DeepSeek-Coder对比:代码生成评测 1. 为什么这场对比值得你花三分钟看完 你有没有过这样的经历:想快速写一段Python脚本处理Excel数据,却卡在循环逻辑里;或者需要补全一个函数但不确定参数顺序,翻文档…

实测YOLOv9镜像性能,结果令人惊喜

实测YOLOv9镜像性能,结果令人惊喜 YOLO系列模型一直是目标检测领域的标杆,而YOLOv9作为2024年发布的最新一代架构,凭借其创新的可编程梯度信息(PGI)机制和通用高效网络(GELAN)设计,…

Java毕设项目推荐-基于springboot的电信卡智慧通讯业务办理3D可视化平台【附源码+文档,调试定制服务】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

模拟电子技术基础:电流检测电阻选型与布局操作指南

以下是对您提供的博文《模拟电子技术基础:电流检测电阻选型与布局操作指南》的 深度润色与专业重构版本 。本次优化严格遵循您的全部要求: ✅ 彻底去除AI痕迹,采用真实工程师口吻写作 ✅ 摒弃“引言/核心知识点/应用场景/总结”等模板化结构,代之以 逻辑递进、问题驱动…

Qwen3-1.7B性能优化教程:GPU算力高效利用的5个关键步骤

Qwen3-1.7B性能优化教程:GPU算力高效利用的5个关键步骤 1. 认识Qwen3-1.7B:轻量但不妥协的实用选择 Qwen3-1.7B是通义千问系列中一款兼顾推理效率与语言能力的中等规模模型。它不是为参数竞赛而生,而是为真实场景中的快速响应、低资源消耗和…

开源大模型趋势解读:YOLO26弹性部署成新主流

开源大模型趋势解读:YOLO26弹性部署成新主流 最近在目标检测领域,一个明显的变化正在发生:开发者不再执着于“跑通一个模型”,而是更关注“如何快速验证想法”“怎样低成本迭代实验”“能不能在不同算力条件下灵活切换”。YOLO26…