A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 铿锵科技 中级黑马   /  2013-2-16 16:33  /  1224 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

                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

5 个回复

正序浏览
陈科宇 发表于 2013-2-18 14:57
集合和数组的区别是比较明显的。数组用于存储确定个数的对象。而且你没有在java中听说要删除数组中 ...

原来如此,受教了
回复 使用道具 举报
       集合和数组的区别是比较明显的。数组用于存储确定个数的对象。而且你没有在java中听说要删除数组中的某个元素吧。数组一旦初始化,就不能为其再添加更多的元素。而集合则更为灵活,可以动态地添加和删除元素。而你的代码问的区别,知识Integer[]类和ArrayList的toString方法不一样而已。toString方法,自Object就有该方法,如果没有被重写,则打印"类名@hashCode"。而Integer[]的toString没有被改写,所以是你看到的原始格式。
回复 使用道具 举报
郭孟涛 发表于 2013-2-16 16:52
我认为是java设计的访问格式的区别。

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

List:有下标
Set: 无下标
回复 使用道具 举报
我认为是java设计的访问格式的区别。

首先集合 并不能简单指定 输出第几个数,集合中的数好像也没有角标吧。
不过如果直接打印数组名,能输出全部数组也是不错。这样功能估计要复写其相应的方法。
回复 使用道具 举报
ArrayList 从类 java.util.AbstractCollection中继承了toString方法 ,打印时会寻找toString方法 如果没有重写父类或接口的toString方法会打印地址值
如果想打印数组 需要调用数组的工具类Arrays ,此类包含用来操作数组,此类中重写了Object中的toString方法,并且重载了各种类型参数的toString方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马