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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

               Collection<String> coll = new ArrayList<String>();
                coll.add("asd1");
                coll.add("asd2");
                coll.add("asd3");
                System.out.println(coll);                    //[asd1, asd2, asd3]        ????????为什么集合打印的结果是这个
                System.out.println("------------------");
                int[] arr = {1,2,3,5,6,7,8,9};
                System.out.println(arr);                    //[I@67064
                System.out.println(Arrays.toString(arr));   //[1, 2, 3, 5, 6, 7, 8, 9]

13 个回复

倒序浏览
没看到你的方法 只知道后面是打印地址值和打印所有元素
回复 使用道具 举报
你直接打印数组只是打印了它的地址值
回复 使用道具 举报
332597171 发表于 2016-9-20 09:26
没看到你的方法 只知道后面是打印地址值和打印所有元素

这就是所有代码了啊,我是不明白打印集合的结果,不过现在明白了
回复 使用道具 举报
数组是个引用
回复 使用道具 举报
本帖最后由 zbwzwd 于 2016-9-21 00:03 编辑

ArrayList的父类AbstractList的父类AbstractCollection里面有实现toString(),所以直接打印;数组没有重写,而其工具类arrays内部重写了,所以直接调用,也就能打印出来了
回复 使用道具 举报
ArrayList重写了toString(),arr没有重写toString()
回复 使用道具 举报
zbwzwd 发表于 2016-9-20 23:55
ArrayList的父类AbstractList的父类AbstractCollection里面有实现toString(),所以直接打印;数组没有重写 ...

是的是的
回复 使用道具 举报
dmyz3214382 发表于 2016-9-21 00:17
ArrayList重写了toString(),arr没有重写toString()

恩恩,知道了
回复 使用道具 举报

恩恩,懂了
回复 使用道具 举报
集合里面重写了toString方法,直接打印集合其实就是调用了toString方法,打印出这个格式
回复 使用道具 举报
这是啥???
回复 使用道具 举报
数组打印的是地址值,定义的时候赋值给的变量名就是一个地址值所以打印的就是一个地址值,集合有自己的tostring方法
回复 使用道具 举报

收到收到
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马