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

Java函数实现不定参数(可变参数)传递的方法是什么?

发布时间:2023-06-13 00:05:27

Java可变参数指的是允许将不定数量的实参传递给方法。一般情况下,Java程序员都会使用可变参数方法来处理不确定参数数量的情况。

在Java中,可变参数使用了“...”作为语法糖的方式来定义。以下是Java函数实现不定参数(可变参数)传递的方法:

1. 使用变量参数列表

使用变量参数列表可以接受任意数量的参数,使用数组来存储参数。函数的形参如果为 Object... args,则该函数可以接受任何类型的参数(包括原始数据类型和对象类型)。示例代码如下:

public static void print(Object... args) {
  for (Object arg : args) {
      System.out.print(arg);
  }
}

调用该函数可接受任意数量的参数:

print("hello");    // "hello"
print("hello", "world");  // "helloworld"
print(1, 2, 3);   // 123

2. 使用数组来传递参数

Java中的数组是一种对象,可以将多个参数存储在同一个数组中,然后通过函数调用来传递数组来实现可变参数。示例代码如下:

public static void printArray(String[] arr) {
  for (String s : arr) {
      System.out.println(s);
  }
}

public static void main(String[] args) {
  String[] arr = {"hello", "world"};
  printArray(arr);
}

在主函数中,我们创建了一个字符串数组,并将其传递给printArray函数。注意,这种方法只能处理相同类型的参数,而且需要手动创建数组。

3. 使用可变参数

在前面的例子中,它们都使用了Variable argument list来接收参数,但这不是Java中实现可变参数的 方法。在Java SE5之前,Java编程者必须手动创建一个数组,然后将数组传递给函数。如下所示:

public void method(String[] s){
    for(int i = 0; i < s.length; i++){
        System.out.println(s[i]);
    }
}

public static void main(String[] args) {
    Test test = new Test();
    String[] s = {"a", "b", "c", "d", "e"};
    test.method(s);
}

在Java5的时候,Java提供了一种新的语法“...”来简化方法的定义和调用。如下所示:

public void method(String ...s){
    for(int i = 0; i < s.length; i++){
        System.out.println(s[i]);
    }
}

public static void main(String[] args) {
    Test test = new Test();
    test.method("a", "b", "c", "d", "e");
}

相比于在Java SE5之前,使用可变参数可以不用手动创建数组,语法更加简单,以上面的代码为例,我们就可以不用创建一个数组,直接把参数传输给方法即可。

总结

Java支持可变参数(Varargs),可以让我们编写可处理可变长度参数的函数。这种技术在处理一些不确定数量的参数时非常有用,例如在处理日志输出时要记录一些变量。使用可变长度参数可以避免运用数组方法,不必声明长度,代码更加简单易读。同时,Java同样有提供数组来进行参数传递的方法,不过相对不推荐使用。