为什么结果会是1?求大神给我解释下,谢谢!

int a[] = {12,56,6,676,8};
List list = Arrays.asList(a);
System.out.println(list.size());

原因是,在Arrays.asList中,该方法接受一个变长参数,一般可看做数组参数,但是因为int[] 本身就是一个类型,所以data变量作为参数传递时,编译器认为只传了一个变量,这个变量的类型是int数组,所以size为1。
http://blog.sina.com.cn/s/blog_6a6badc90101550l.html

Arrays.asList(a)这个方法只是建立的数组和集合的关系,但是底层的保存形式还是数组。看看源码就会知道:

    @SafeVarargs
    public static <T> List<T> asList(T... a) {
        return new ArrayList<>(a);
    }
     //----------------------------
                    private final E[] a;//这是arrayList的属性

        ArrayList(E[] array) {
            if (array==null)
                throw new NullPointerException();
            a = array;//把数组传给arraList
        }

从源码可以看出:list中其实存放的只不过是一个数组,所以长度自然数1呀。

第二种方法验证特别简单:就是给List加上泛型,随意添加一个除了Object类的泛型,然后eclipse就会自动纠错,最后结果就是

     List<int[]> list = Arrays.asList(a);

这会特别明了的看清楚数据转成集和的本质。长度也就一目了然了。

你list里面存放的就是a数组啊,肯定size就是1啊