V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ndht97
V2EX  ›  Java

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

  •  
  •   ndht97 · 2018-08-03 22:00:28 +08:00 · 4306 次点击
    这是一个创建于 2339 天前的主题,其中的信息可能已经有所发展或是发生改变。
    10 条回复    2018-08-06 13:27:56 +08:00
    cyhou
        1
    cyhou  
       2018-08-03 22:05:50 +08:00   ❤️ 1
    overwrite toString
    mringg
        2
    mringg  
       2018-08-03 22:08:13 +08:00 via iPhone
    toJson
    ndht97
        3
    ndht97  
    OP
       2018-08-03 22:36:56 +08:00
    @mringg 没有学到这个,但是谢谢你
    ndht97
        4
    ndht97  
    OP
       2018-08-03 22:37:23 +08:00
    @cyhou 谢谢,搞定了
    ClutchBear
        5
    ClutchBear  
       2018-08-03 22:40:06 +08:00   ❤️ 2
    定义类的时候,
    重写 toString 方法。
    idea 用快捷键自动重写。
    sxd96
        6
    sxd96  
       2018-08-04 00:34:46 +08:00   ❤️ 4
    上面已经有人跟你说过重写 toString 了。
    但是之前看到打印出来的那一串十六进制数,并不是对象的地址。
    Object 类的 toString 是调用了 hashCode()方法得到了对象的一个哈希值,而不是对象的地址。
    更多的内容有一篇博客,或者大部分 java 书籍里相应章节都有的
    https://www.cnblogs.com/xudong07/p/9055288.html
    ndht97
        7
    ndht97  
    OP
       2018-08-04 00:51:35 +08:00
    @sxd96 感谢纠正,又了解了一点,哈哈
    sharkv
        8
    sharkv  
       2018-08-04 09:01:55 +08:00
    你查看 System.out.println(Object o)方法;源码调用的是 o.toString()。 后面的同上所述,需要重写 toString()
    mmdsun
        9
    mmdsun  
       2018-08-05 00:13:53 +08:00 via Android
    @sxd96 那 java 怎么打印对象地址?
    sxd96
        10
    sxd96  
       2018-08-06 13:27:56 +08:00
    @mmdsun 我也是在学习中,目前所知,java 是得不到对象地址的,你能得到的只有对象的引用。而且 java 中对象在堆中的地址不是固定不变的,大部分 GC 都会移动对象,这时候对象就被移动到另外的地址上了,就算我们得到了对象的地址也没有什么意义。
    如果你在网上搜到相关解答可以 @我下,互相学习。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2730 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 09:07 · PVG 17:07 · LAX 01:07 · JFK 04:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.