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);
    }

}

 

posted @ 2014-12-28 23:35  小菜希  阅读(161)  评论(0编辑  收藏  举报