概述
有时在定义方法时,参数的数量 不确定,根据实际情况 传入 的 参数数量不确定,除了将形参定义成数组以外,还可以定义 可变参数。
说明
定义
方法名(类型 ... arr){
// 此时 arr 是数组类型
}
调用传值
方法名(参数1,参数2,参数3)
此时 arr的值是 [参数1,参数2,参数3]
例子
找出数组中的最大值
public static int max(int... array){
int result = 0;
for(int i = 0; i < array.length; i++){
if(array[i] > result){
result = array[i];
}
}
return result;
}
public static void main(String[] args) {
System.out.println(max(1, 2, 3, 4, 5, 6));
System.out.println(max(1));
System.out.println(max());
}
注意
可变参数 会被当做 数组处理
可变参数和数组类型的参数 不能构成 方法的 重载
下面程序报错:
public static void test(int... array){
}
public static void test(int[] array){
}
按照数组遍历
可变参数 按照数组的方式遍历即可
传递的参数用 逗号分隔
调用带有可变参数的方法时,传递的参数用 逗号分隔
可以不传
可变参数代表0到n个参数,可以不传,不传就是一个长度为0的数组
可变参数只能声明在方法参数的最后一个位置
下面程序报错:
public static void test(int... array,float f){
}
每个方法只允许声明一个可变参数
下面程序报错:
public static void test(int... array,float ... f){
}
可变参数是Object类型
当可变参数的数据类型是Object类型需要特殊注意,因为多态的原因,所有的数据类型都可以用Object声明,容易出现问题