当 println() 正在显示一个对象时,println() 调用了哪个对象方法?

when println() is displaying an Object, which one of the Objects methods does println() call?

println() 显示 Object 时,Object 中的哪一个 println() 调用的方法?

我不确定是 toString 还是 String 有人可以澄清一下吗?

None 个。
如果您将对象传递给 println() this

println(Object o) 

将被调用,实际上调用 String.valueOf(o)

但是如果 o 不为空,String.valueOf(o) 会调用 o.toString()

所以你可以间接地说它 toString()


println(java.lang.Object) and valueOf(java.lang.Object)

当使用签名 println(Object) 时,toString() 方法用于输出该对象的字符串表示形式。

当在您定义的对象上调用 toString() 时,它会级联 superclasses 的层次结构,直到达到 java.lang.Object,因为在任何中间超级classes 或初始class。到达 java.lang.Object 后,系统将调用基本 toString() 方法,该方法打印该对象的字符串文字表示,这就是为什么您会在输出中看到一些内存地址的原因。