java 可变参数
Java可变参数
Java中可以允许将同功能, 同名称的参数个数不同的方法合并为一个方法, 就是可变参数方法.
可变参数大大提高了代码的复用性, 通过灵活运用可变参数,我们可以让代码更加简洁、高效,减少冗余。个人感觉这个性质很有趣
简单示例
public class Main {
public static void main(String[] args) {
VarParameter varParameter = new VarParameter();
System.out.println(varParameter.getSum(1, 2, 3));
}
}
class VarParameter {
public int getSum(int... numbers) {
System.out.println("参数个数为: " + numbers.length);
int res = 0;
for (int i = 0; i < numbers.length; i++) {
res += numbers[i];
}
return res;
}
}
可以发现, 传入的number可以被当作数组使用
一些特点:
- 可变参数的实参可以为0个或者任意多个
- 可变参数的实参可以是一个数组
- 可变参数可以和普通参数一起放在形参列表, 但是必须保证可变参数在最后, 且一个形参列表只能出现一个可变参数
public int getSum(String str, int... numbers) {
System.out.println("参数个数为: " + numbers.length);
int res = 0;
for (int i = 0; i < numbers.length; i++) {
res += numbers[i];
}
return res;
}
本质
深入解析一下java编译器, 就可以发现, 其实java编译器会将可变参数转化为数组, 所以其实可以将其理解为
int getSum(int... numbers) {
}
=>
int getSum(int[] numbers = new int[] {...}} {
}
所以我们也可以知道如果我们传入一个数组也是可以编译通过的
public class Main {
public static void main(String[] args) {
VarParameter varParameter = new VarParameter();
System.out.println(varParameter.getSum(1, 2, 3));
int[] arr = new int[] {1, 2, 4};
varParameter.getSum(arr);
}
}
class VarParameter {
public int getSum(int... number) {
System.out.println("参数个数为: " + number.length);
int res = 0;
for (int i = 0; i < number.length; i++) {
res += number[i];
}
return res;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)