黑马程序员技术交流社区

标题: 数组为什么直接打印不出所有内容? [打印本页]

作者: xiangzi2008006    时间: 2013-8-22 22:50
标题: 数组为什么直接打印不出所有内容?
本帖最后由 xiangzi2008006 于 2013-8-23 08:45 编辑

数组为什么直接打印不出所有内容?
作者: gulup    时间: 2013-8-22 23:19
数组是引用类型的,toString是Object默认的toString。
返回来由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成的字符串。所以直接输出数组不会把数组内的元素打印出来。
而List这样的容器呢,因为继承了AbstractCollection,而AbstractCollection又覆盖了toString方法,返回的字符串由 collection 元素的列表组成,这些元素按其迭代器返回的顺序排列,并用方括号 ("[]") 括起来。相邻元素由字符 ", "(逗号加空格)分隔。所以就直接打印了集合内的元素。
作者: 王延龙    时间: 2013-8-22 23:59
楼上的兄弟,正解,先顶一个。

在Java中,有基本数据类型和引用数据类型两种,基本数据类型就是整型、浮点数、字符型以及布尔型 它们的创建是在 栈 内存中,基本数据类型变量存储的就是实际的值。

但是,使用new操作符创建的就是引用数据类型,如字符串、数组、还有类(类也可以看做一个类型,就是类类型)。引用数据类型存储在堆内存中,引用数据类型的变量中,存储的只是一段指向堆内存的地址值。这个地址值就是该  引用数据类型名 + @ +引用数据类型的十六进制形式的内存地址组成的字符串。

实质是由toString方法来调用这个字符串的。

作者: xiangzi2008006    时间: 2013-8-23 08:38
哦,懂了,谢谢楼上的回答




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