为什么向 ArrayList 中添加了几个对象,直接打印列表后结果是对象地址呢?怎么显示内容

2018-08-03 22:00:28 +08:00
 ndht97
4260 次点击
所在节点    Java
10 条回复
cyhou
2018-08-03 22:05:50 +08:00
overwrite toString
mringg
2018-08-03 22:08:13 +08:00
toJson
ndht97
2018-08-03 22:36:56 +08:00
@mringg 没有学到这个,但是谢谢你
ndht97
2018-08-03 22:37:23 +08:00
@cyhou 谢谢,搞定了
ClutchBear
2018-08-03 22:40:06 +08:00
定义类的时候,
重写 toString 方法。
idea 用快捷键自动重写。
sxd96
2018-08-04 00:34:46 +08:00
上面已经有人跟你说过重写 toString 了。
但是之前看到打印出来的那一串十六进制数,并不是对象的地址。
Object 类的 toString 是调用了 hashCode()方法得到了对象的一个哈希值,而不是对象的地址。
更多的内容有一篇博客,或者大部分 java 书籍里相应章节都有的
https://www.cnblogs.com/xudong07/p/9055288.html
ndht97
2018-08-04 00:51:35 +08:00
@sxd96 感谢纠正,又了解了一点,哈哈
sharkv
2018-08-04 09:01:55 +08:00
你查看 System.out.println(Object o)方法;源码调用的是 o.toString()。 后面的同上所述,需要重写 toString()
mmdsun
2018-08-05 00:13:53 +08:00
@sxd96 那 java 怎么打印对象地址?
sxd96
2018-08-06 13:27:56 +08:00
@mmdsun 我也是在学习中,目前所知,java 是得不到对象地址的,你能得到的只有对象的引用。而且 java 中对象在堆中的地址不是固定不变的,大部分 GC 都会移动对象,这时候对象就被移动到另外的地址上了,就算我们得到了对象的地址也没有什么意义。
如果你在网上搜到相关解答可以 @我下,互相学习。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/476729

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX