在JDK1.5之后,如果我们定义一个方法需要接收多个参数,并且多个参数类型一致,我们可以对其简化称如下格式:
修饰符 返回值类型 方法名(参数类型... 形参名){ }
其实这个书写完全等价于:
修饰符 返回值类型 方法名(参数类型[] 形参名){ }
只是后面这种定义,在调用时必须传递数组,而前者可以直接传递数据即可。
JDK1.5以后。出现了简化操作。...用在参数上,称之为可变参数。
同样是代表数组,但是在调用这个带有可变参数的方法时,不用创建数组(这就是简单之处),直接将数组中的元素作为实际参数进行传递,其实编译成的class文件,将这些元素先封装到一个数组中,再进行传递。这些动作都在编译.class文件时,自动完成了。
使用前提:当方法的参数列表数据类型已经确定,但是参数的格式不确定时,就可以使用可变参数。
使用格式:定义方法时使用,上式。
public static void main(String[] args) { int sum = add(10,20,30,40,50,60,70,80,90); System.out.println(sum); // 450 } // 定义一个方法,计算(0-n)个整数的和 // 已知:数据类型确定,int;未知:参数个数 private static int add(int... arr) { // 底层就是数组,,编译时创建,非运行时创建 System.out.println(arr); // [I@1b6d3586 ,打印的是数组的地址值 System.out.println(arr.length); // 9 int sum = 0; for (int i:arr) { sum += i; } return sum; }
注意事项:
1.一个方法的参数列表,只能有一个可变参数;
2.如果方法的参数有多个,那么可变参数必须写在参数列表的末尾。
可变参数的特殊写法:传入Object类型(可以任意类型)
// 可变参数的特殊/终极写法 private static void method(String str,Object... obj) { }