可变参数
JDK中具有可变参数的类Arrays.asList()方法。
分别传多个参、传数组,传数组又传参的情况。
注意:传入基本数据类型数组的问题。
从JDK 5开始, Java 允许为方法定义长度可变的参数。
语法:数据类型…变量名。
可变长参数是Object[] 数组。(可变参数里存的是对象数组)
JDK中的典型应用:
Arrays.asList(T…a)是jdk中的典型应用。
需求:对若干个整数进行求和
public static int sum1(int a,int b ) { return a+b; }
若干个整数求和如何解决?
可以使用数组接收整数。
public static int sum1(int[] numbers) { if (numbers == null) { return 0; } if (numbers.length == 0) { return 0; } int sum = 0; for (int num : numbers) { sum += num; } return sum; }
可以使用可变参数
public static int sum2(int... numbers) { if (numbers == null) { System.out.println("可变参数的值为null"); return 0; } if (numbers.length == 0) { System.out.println("可变参数的值的长度为0"); return 0; } int sum = 0; for (int num : numbers) { sum += num; } return sum; }
可变参数的使用
public static void main(String[] args) { // int result = sum1(new int[] { 1, 3, 5, 7, 9 }); // System.out.println(result); // // 使用了可变参数,传一个数组进去 // int result = sum2(new int[] { 1, 3, 5, 7, 9 }); // System.out.println(result); // 使用了可变参数,不必声明数组,简化书写 // int result = sum2(2, 4, 6, 8, 10); // int result = sum2(1); int result = sum2(); System.out.println(result); }
可变参数的细节
声明:
在一个方法中,最多只能有一个可变参数。
可变参数只能放在参数列表的最后面。
调用:
当使用可变参数时,可以传0或多个参数。
当使用可变参数时,也可以传一个数组进去,就表示多个参数。
使用:
在方法内部使用时,就是在使用一个数组。
当调用时没有传参数时(传了0个),这时在方法内部的参数数组是有值的(不为null),但长度为0.