println(String s)vs println(Object o)

aio*_*obe 3 java

在我看来,这PrintStream.print(Object x)PrintStream.println(Object x)是相同的PrintStream.print(String x)PrintStream.println(String x).

两个都有明显的理由吗?他们有什么不同吗?API-docs的可读性?效率?

(使用自动装箱,我怀疑即使采用原语作为参数的打印方法也是多余的......但是这些方法早于自动装箱功能,因此可以解释.)

Boz*_*zho 10

他们不这样做同样的事情:

print(Object x)调用String.valueOf(x),返回:

(obj == null) ? "null" : obj.toString();
Run Code Online (Sandbox Code Playgroud)

所以我们有一个额外的toString()方法.

结果是一样的,因为String.toString()回报this.但是为了便于API的使用,不应该强迫用户理解这些细节.