int[] a1 =new int[]{1,2,3};
String[] a2 = new String[]{"a", "b", "c"};
System.out.println(Arrays.asList(a1));
System.out.println(Arrays.asList(a2));outPut:
[[I@de6ced]
[a, b, c]这里,a1 按照 JDK1.5  的方式运行,
我想问的是,参数列表中,asList(T... a)
是不是多个元素当成“1”个 Object哈?
因为我运行
int[] a3 = new int[]{2};
System.out.println(Arrays.asList(a3))
outPut 的格式和 a1 的输出格式是一样的。

解决方案 »

  1.   

    首先讲解T... a
    类型后加三个点代表可变参数(数量可变)
    T是泛型例子:public static void main(String[] args) {
    System.out.println(add1(1, 2, 3, 4, 5)); //可以继续加参数
    System.out.println(add1(new int[]{1, 2, 3, 4, 5})); //其实参数n就是个数组啦,是个语法糖,某个版本才加的新特性,可以用两种方式调用
    System.out.println(add2(new int[]{1, 2, 3, 4, 5})); //这个方法就只能传数组了,是老语法
    //System.out.println(add2(1, 2, 3, 4, 5));  //这个就不能用可变参数方式调用了
    }

    public static int add1(int... n) {
    int result = 0;
    for(int i : n)
    result += i;
    return result;
    }

    public static int add2(int[] n) {
    int result = 0;
    for(int i : n)
    result += i;
    return result;
    }
    接下来讲Arrays.toList
    这个方法作用,将数组转换成List
    但请注意,List中只能存储对象类型的元素,不能存基本类型
    举个例,能存Integer,不能存int!!!
    如果你这么调用List list = Arrays.toList(new int[]{1, 2, 3})
    意思就是将元素为int型的数组转换成元素为int型的List
    很显然,它没法转,因为int是基本类型,不是对象
    虽然这么做这个方法不会报错,且也会返回一个List对象给你,但这个对象是无效的,是不能用的,是错误的
    你可以测试list.add(1)或者list.get(0),是会报错滴
      

  2.   

    引用java编程思想的说法,Arrays.asList在底层还是数组,所以不能调整大小,add()这类不能用很正常(返回一个受指定数组支持的固定大小的列表 引自jdk 6.0中文文档)
    还有Integer类自身没有toString的实现,而String类型有
      

  3.   

            int[] data = {1,2,3};
            java.util.List<?> l = java.util.Arrays.asList(data);
            System.out.println(l);
            System.out.println(java.util.Arrays.toString((int[])l.get(0)));
      

  4.   

    我有想过加的应该是 对象哈,list.add(1),get(0)都没有错的,
    我想的是 AutoBoxing,自动装箱···
      

  5.   

    我觉得前面大侠说的蛮好的,我觉得增加的应该是 对象,而 int[]数组整个是对象,里面不是对象。我觉得这样了解好点,谢谢了,况且 打印 是一个对象:[[I@de6ced] ,不是间隔的多个对象。
      

  6.   


    重新验证了一下,toList方法返回的List是不能添加东西的,如果传入的是基本类型的数组,那么会将此数组存到到List中索引为0的位置上细节地方了解得还不够深啊,反省中