JAVA 方法的可变参数(不定长参数)

概述

有时在定义方法时,参数的数量 不确定,根据实际情况 传入 的 参数数量不确定,除了将形参定义成数组以外,还可以定义 可变参数。

说明

定义

方法名(类型 ... 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声明,容易出现问题


原文出处:/show_1EF4rTrY6mJj.html