首页 > 代码库 > JDK5.0新特性-可变参数

JDK5.0新特性-可变参数

技术分享

可变参数:
格式 类型... 变量
本质上这个参数是一个数组。

优点:1.传参数时可以传递数组,也可以传递多个值。
2.可以不传递值.



Arrays.asList()可以将数组转换成List集合.
注意:得到的是一个固定长度的List集合。
原因:是因为数组长度是固定的,这个集合是由数组转换成的。

为什么要将数组转换成集合?
集合中提供更丰富的操作.


int[] arr = { 1, 2, 3 };
List list = Arrays.asList(arr);
System.out.println(list.size());

System.out.println(list);

将一个int[]转换成了List集合使用Arrays.asList方法
得到的集合长度为1,集合中的元素是int[]为什么?

集合中的元素是Object。
因为我们现要转换的集合中的元素是int类型,不能直接装入到集合中(也没有进行装箱)
这时就将数组对象做为了集合对象.List<int[]>

-------------------------------

package cn.itcast.param;import java.util.Arrays;import java.util.List;import org.junit.Test;//可变参数public class Demo {    // // 求两个int数的和    // public int sum(int a, int b) {    // return a + b;    // }    //    // // 求三个数的和    // public int sum(int a, int b, int c) {    // return a + b + c;    // }    // // 求n个数的和---使用数组解决    // public static int sum(int[] arr) {    // int sum = 0;    // for (int i = 0; i < arr.length; i++) {    // sum += arr[i];    // }    // return sum;    // }    public static int sum(int... a) {        int sum = 0;        for (int i = 0; i < a.length; i++) {            sum += a[i];        }        return sum;    }    public static void main(String[] args) {        // 求两个数的和        int a = 10;        int b = 20;        // System.out.println(sum(new int[] { a, b })); // 需要人为手动进行包装.将数据包装到数组中。        // 对于我们开发人员,使用不爽。------------想要包装,就包装,不想包装就不包装.----可以使用可变参数.        System.out.println(sum(a, b));        sum();    }    // 在一个方法内只能有一个可变参数,并且这个可变参数必须写在最后,不能在其后在有其它参数    // public void demo(String...s,int b){} 可变参数后不可以在有参数    // public void demo(String...s1,String...s2){} 一个方法内只能有一个可变参数。    // public void demo(int b,String...s){} //只能在可变参数前加其它参数.    // 可变参数示例 Arrays.asList() 它的作用可以将数组转换成集合.    @Test    public void demo() {        // String[] s = { "a", "b", "c" };        // List list = Arrays.asList(s); //得到的是一个固定大小的List。        //        // //list.add("d");        // System.out.println(list);        int[] arr = { 1, 2, 3 };        List list = Arrays.asList(arr);        System.out.println(list.size());                System.out.println(list);    }}

 

JDK5.0新特性-可变参数