ndht97
V2EX  ›  Java

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

  •  
  •   ndht97 · Aug 3, 2018 · 5463 views
    This topic created in 3020 days ago, the information mentioned may be changed or developed.
    10 replies  •  2018-08-06 13:27:56 +08:00
    cyhou
    cyhou
    Aug 3, 2018❤️1
    1
    overwrite toString
    ming2050
    ming2050
    Aug 3, 2018 via iPhone
    2
    toJson
    ndht97
    ndht97
    OP
    Aug 3, 2018
    3
    @mringg 没有学到这个,但是谢谢你
    ndht97
    ndht97
    OP
    Aug 3, 2018
    4
    @cyhou 谢谢,搞定了
    ClutchBear
    ClutchBear
    Aug 3, 2018❤️2
    5
    定义类的时候,
    重写 toString 方法。
    idea 用快捷键自动重写。
    sxd96
    sxd96
    Aug 4, 2018❤️4
    6
    上面已经有人跟你说过重写 toString 了。
    但是之前看到打印出来的那一串十六进制数,并不是对象的地址。
    Object 类的 toString 是调用了 hashCode()方法得到了对象的一个哈希值,而不是对象的地址。
    更多的内容有一篇博客,或者大部分 java 书籍里相应章节都有的
    https://www.cnblogs.com/xudong07/p/9055288.html
    ndht97
    ndht97
    OP
    Aug 4, 2018
    7
    @sxd96 感谢纠正,又了解了一点,哈哈
    sharkv
    sharkv
    Aug 4, 2018
    8
    你查看 System.out.println(Object o)方法;源码调用的是 o.toString()。 后面的同上所述,需要重写 toString()
    mmdsun
    mmdsun
    Aug 5, 2018 via Android
    9
    @sxd96 那 java 怎么打印对象地址?
    sxd96
    sxd96
    Aug 6, 2018
    10
    @mmdsun 我也是在学习中,目前所知,java 是得不到对象地址的,你能得到的只有对象的引用。而且 java 中对象在堆中的地址不是固定不变的,大部分 GC 都会移动对象,这时候对象就被移动到另外的地址上了,就算我们得到了对象的地址也没有什么意义。
    如果你在网上搜到相关解答可以 @我下,互相学习。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2491 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 11:27 · PVG 19:27 · LAX 03:27 · JFK 06:27
    ♥ Do have faith in what you're doing.