欢迎访问宙启技术站
智能推送

Java函数-可变参数和不定长参数列表的使用方法

发布时间:2023-08-06 06:35:39

在Java中,可变参数和不定长参数列表是两种不同的方法来处理函数的参数,使得函数可以接受不确定数量的参数。

可变参数是Java 5中引入的特性,通过使用 ellipsis(三个连续的小数点)来定义函数的参数。可变参数可以接受任意数量相同类型的参数,并将它们封装成一个数组。这样,在函数体内,我们就可以像处理数组一样处理这些参数。例如:

public static int sum(int... numbers) {
    int result = 0;
    for (int number : numbers) {
        result += number;
    }
    return result;
}

在上面的例子中,sum函数接受可变参数 numbers,可以传入任意数量的int类型参数。在函数体内,我们可以像处理数组一样,使用 foreach 循环遍历 numbers 中的每个参数,并将它们累加到 result 变量中。

对于调用者来说,可以传入任意数量的参数,也可以不传入任何参数。可以使用逗号分隔多个参数,或者直接传入一个数组。例如:

int sum1 = sum(1, 2, 3, 4);
int sum2 = sum(5, 6);
int sum3 = sum(); // 不传入任何参数

不定长参数列表是Java 8中引入的特性,使用不定长参数列表可以接受任意数量且类型不同的参数。函数的参数类型是一个带有泛型<T>的数组。例如:

public static <T> void printAll(T... objects) {
    for (T object : objects) {
        System.out.println(object);
    }
}

在上面的例子中,printAll函数接受不定长参数 objects,并使用泛型<T>来定义数组的类型。在函数体内,我们可以使用 foreach 循环遍历 objects 数组中的每个元素,并打印出来。

对于调用者来说,可以传入任意数量的参数,并且这些参数可以是任意类型。例如:

printAll(1, "Hello", true);
printAll(1.23, "World");
printAll(); // 不传入任何参数

需要注意的是,不定长参数列表只能存在一个,并且它必须是函数的最后一个参数。这是因为不定长参数列表会将函数调用中的多个参数封装成一个数组,而在函数调用时,我们无法确定哪些参数应该被封装进数组中。

总结一下,可变参数和不定长参数列表是两种Java函数处理不确定数量参数的方法。可变参数通过 ellipsis 来定义函数的参数,接受任意数量的相同类型参数;不定长参数列表使用泛型数组来定义函数的参数,接受任意数量和类型的参数。无论是可变参数还是不定长参数列表,都大大提高了函数的灵活性和可重用性。