println(String s)vs println(Object o)

时间:2010-09-16 07:46:59

标签: java

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

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

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

2 个答案:

答案 0 :(得分:10)

他们同样的事情:

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

(obj == null) ? "null" : obj.toString();

所以我们还有一个toString()方法。

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

答案 1 :(得分:2)

PrintStream.print(Object x)

打印由

生成的字符串
String.valueOf(Object)

但是

PrintStream.print(String x)

打印字符序列,如果null它将打印为空