5.2.3 形参个数可变的方法

5.2.3 形参个数可变的方法

JDK1.5之后,Java允许定义形参个数可变的参数,从而允许为方法指定数量不确定的形参。如果在定义方法时,在最后一个形参的类型后增加三点(),则表明该形参可以接受多个参数值,多个参数值被当成数组传入。

可变参数和数组参数的区别

数组形式的形参可以处于形参列表的任意位置,
**个数可变的形参只能处于形参列表的最后**。

变参总结

  1. 个数可变的形参只能处于形参列表的最后
  2. 一个方法中最多只能包含一个个数可变的形参
  3. 个数可变的形参本质就是一个数组类型的形参,因此调用包含个数可变形参的方法时,该个数可变的形参既可以传入多个参数,也可以传入一个数组
  4. 遍历个数可变的形参和遍历数组的方式一样

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class Varargs {
// 定义了形参个数可变的方法
public static void test(int a, String... books) {

// 输出整数变量a的值
System.out.println(a);
System.out.println("----------------- 通过 forecah 遍历变参 --------------");
// books被当成数组处理
// foreach遍历数组
for (String tmp : books) {
System.out.println(tmp);
}
System.out.println("---------------- 通过 for 遍历变参 ----------------");
// 普通遍历数组的方式
for (int i = 0; i < books.length; i++) {
System.out.println(books[i]);
}
System.out.println("################################");
}

public static void main(String[] args) {
// 调用test方法,传入可变长度的形参
test(5, "Hello", "World");
// 给可变长度的形参传入数组
test(1, new String[] { "Hello", "World" });
}
}

运行结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
5
----------------- 通过 forecah 遍历变参 --------------------------
Hello
World
---------------- 通过 for 遍历变参 ----------------------------
Hello
World
################################
1
----------------- 通过 forecah 遍历变参 --------------------------
Hello
World
---------------- 通过 for 遍历变参 ----------------------------
Hello
World
################################

可以看到遍历变参,就跟遍历数组一模一样