可变参数允许方法接收不定数量的参数,通过类型后加...定义,如int... numbers,本质是数组,可传0个或多个值或数组,调用灵活,但必须位于参数列表末尾且最多一个,常用于求和、日志等场景。

在Java中,可变参数(varargs)允许你向方法传递不定数量的参数,使方法调用更灵活。使用可变参数可以避免重载多个版本的方法来处理不同数量的参数。
可变参数的语法
在方法的形参列表中,通过在参数类型后添加三个点 ... 来定义可变参数。例如:
public void printNumbers(int... numbers) {for (int num : numbers) {
System.out.println(num);
}
}
这里的 int... numbers 表示该方法可以接收0个或多个 int 类型的参数。在方法内部,numbers 被当作一个数组处理。
调用可变参数方法
你可以用多种方式调用上面的方法:
立即学习“Java免费学习笔记(深入)”;
- 不传参数: printNumbers();
- 传入多个值: printNumbers(1, 2, 3);
- 传入数组: int[] arr = {4, 5, 6}; printNumbers(arr);
这三种调用方式都是合法的,因为可变参数本质上是数组。
注意事项和规则
使用可变参数时需要注意以下几点:
- 一个方法的参数列表中,可变参数只能出现在最后位置。
- 每个方法最多只能有一个可变参数。
- 可变参数可以与其它类型的参数共存,但必须放在参数列表末尾。
例如:
public void log(String tag, String... messages) {for (String msg : messages) {
System.out.println("[" + tag + "] " + msg);
}
}
这个方法接受一个标签和任意数量的消息字符串。
常见应用场景
可变参数常用于以下场景:
- 数学计算:如求多个数的最大值、总和等。
- 日志输出:记录多个信息条目。
- 工具类方法:比如拼接字符串、初始化集合等。
例如实现一个求和方法:
public int sum(int... values) {int total = 0;
for (int v : values) {
total += v;
}
return total;
}
基本上就这些。掌握可变参数能让你写出更简洁、易用的API。注意别滥用,如果参数数量固定,还是建议使用明确的参数列表。










