当println()显示一个Object时,哪个Objects方法会println()调用?

时间:2015-06-02 05:05:47

标签: java eclipse methods static

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

  • add()
  • toString()
  • equals()
  • compareTo()
  • 字符串()

我不确定Stringdef combination(n, [x|xs]) do (for y <- combination(n - 1, xs), do: [x|y]) ++ combination(n, xs) end 是否有人可以澄清一下?

2 个答案:

答案 0 :(得分:1)

他们都不是。
如果您将对象传递给println()

println(Object o) 
将调用

实际调用String.valueOf(o)

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

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

请参阅
println(java.lang.Object)valueOf(java.lang.Object)

答案 1 :(得分:0)

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

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