Java可变参数
可变参数(Varargs)
在 Java 中,可以使用一种特殊的语法 varargs(可变长度参数) 来向方法传递任意数量的同一类型的参数。这些参数通过在类型后面加上三个点 … 来声明。
例如,下面这个方法接收一个 int 类型的可变参数,并通过 length 属性输出参数的数量:
public static void printNumberOfArguments(int... numbers) {System.out.println(numbers.length);
}
解释代码:
-
int… numbers 表示这个方法可以接受任意数量的整数参数,包括 0 个。
-
numbers 实际上在方法内部会被当作一个整型数组处理。
调用方式如下:
printNumberOfArguments(1);
printNumberOfArguments(1, 2);
printNumberOfArguments(1, 2, 3);
printNumberOfArguments(new int[] { }); // 没有传递任何元素
printNumberOfArguments(new int[] { 1, 2 }); // 传递了一个数组
输出结果为:
1
2
3
0
2
补充说明:
这个例子也说明了 参数(parameter) 和 实参(argument) 的区别:
-
方法定义中只有一个参数 int… numbers。
-
但调用时可以传入多个实参(如 1, 2, 3),这些实参会自动被打包成一个数组。
可变参数与其他参数的顺序
当方法中有多个参数时,可变参数必须是最后一个参数。否则会导致语法错误。
错误的写法:
public static void method(double... varargs, int a) { /* do something */ }
这会报错,因为 varargs 不是最后一个参数。
正确的写法:
public static void method(int a, double... varargs) { /* do something */ }
小结:
类型... 参数名:声明可变参数。可变参数在方法内部表现为一个数组。一个方法只能有一个 varargs 参数,且它必须是最后一个参数。