1.什么是可变参数
首先来看下概念。
Java的可变参数指的是在方法中设置不定数量的参数。可变参数使得代码更加简洁,可以更好地处理参数的变化。
java允许将同一个类中多个同名,同功能但参数个数不同的方法封装成一个方法。就可以通过可变参数实现。
传入的多个参数会被以数组的形式传入,也可以直接传入数组。
可变参数可以和普通参数一同传入,但是要确定可变参数放在最后。
比如:
public static boolean test(Object param1, Object... params)
特点
只能出现在参数列表的最后;
... 位于变量类型和变量名之间,前后有无空格都可以;
调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
2.举一个栗子
可变参数使用一个省略号(...)来表示,它可以接受任意数量的参数,参数类型必须相同。 例如:
public static int sum(int... nums) { int sum = 0; for (int num: nums) { sum += num; } return sum; }
上面的例子中,sum()方法接受任意数量的int类型参数,然后将它们相加,最后返回总和。 可以使用以下方式调用sum()方法:
sum(1, 2, 3); sum(1, 2, 3, 4, 5); sum(1, 2, 3, 4, 5, 6, 7, 8, 9);
可变参数可以用于实现可变长度的参数列表,可以接受任意数量的参数,而不必指定参数的个数。
怎么样,神奇吧。
3. 需要注意的点
- Java可变参数只能放在参数列表的最后一位,不能放在其他参数前面。
- Java可变参数只能有一个,不能有多个。
4. 思考题
上面我们对可变参数的定义为:在方法中设置不定数量的参数,传入的多个参数会被以数组的形式传入,也可以直接传入数组。
假如有一个方法长这样:
public static boolean test(Object... params)
当我调用的时候,传入的值就是null,那么会被解析成数组吗?
答案:
可变参数的核心是将参数封装为数组,但是传入null时并不是只含有一个null元素的数组,而是null。
可变参数方便调用者传入不固定数量的参数,且不需要在前面非常不优雅的构造数组对象。