黑马程序员技术交流社区

标题: 集合和数组的区别在那,为什么? [打印本页]

作者: 铿锵科技    时间: 2013-2-16 16:33
标题: 集合和数组的区别在那,为什么?
                ArrayList al=new ArrayList();
                al.add(1);
                al.add(2);
                al.add(3);
                System.out.println(al);//输出集合
                Integer[] arra={1,2,3};
                System.out.println(arra);//输出数组

为什么集合能直接输出元素[1, 2, 3]
为什么数组输出的是这样[Ljava.lang.Integer;@de6ced

作者: 夏振博    时间: 2013-2-16 16:47
ArrayList 从类 java.util.AbstractCollection中继承了toString方法 ,打印时会寻找toString方法 如果没有重写父类或接口的toString方法会打印地址值
如果想打印数组 需要调用数组的工具类Arrays ,此类包含用来操作数组,此类中重写了Object中的toString方法,并且重载了各种类型参数的toString方法
作者: 郭孟涛    时间: 2013-2-16 16:52
我认为是java设计的访问格式的区别。

首先集合 并不能简单指定 输出第几个数,集合中的数好像也没有角标吧。
不过如果直接打印数组名,能输出全部数组也是不错。这样功能估计要复写其相应的方法。
作者: 夏振博    时间: 2013-2-16 17:04
郭孟涛 发表于 2013-2-16 16:52
我认为是java设计的访问格式的区别。

首先集合 并不能简单指定 输出第几个数,集合中的数好像也没有角标吧 ...

List:有下标
Set: 无下标
作者: 陈科宇    时间: 2013-2-18 14:57
       集合和数组的区别是比较明显的。数组用于存储确定个数的对象。而且你没有在java中听说要删除数组中的某个元素吧。数组一旦初始化,就不能为其再添加更多的元素。而集合则更为灵活,可以动态地添加和删除元素。而你的代码问的区别,知识Integer[]类和ArrayList的toString方法不一样而已。toString方法,自Object就有该方法,如果没有被重写,则打印"类名@hashCode"。而Integer[]的toString没有被改写,所以是你看到的原始格式。
作者: 铿锵科技    时间: 2013-2-18 15:15
陈科宇 发表于 2013-2-18 14:57
集合和数组的区别是比较明显的。数组用于存储确定个数的对象。而且你没有在java中听说要删除数组中 ...

原来如此,受教了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2