小编典典

System.out.println()中的toString()方法是双重调用?

java

我的一位教授曾经说过,绝不应该执行以下代码:

System.out.println(object.toString());

他说(我相信引用为“ Effective
Java”)会引起重复调用。由于print语句调用对象的toString方法,因此两次调用toString方法的效率较低。首选方法是仅使用:

System.out.println(object);

显然,这种方式在代码中看起来更好,并且可以节省时间。无论如何,我总是会这样做,但是我的问题是“这实际上更有效吗?”。在查看PrintStream文档时,已重载了print方法以将String作为参数(如果首先调用toString方法,情况将会如此)。我没有看到该版本的print方法在何处调用输入参数的toString方法,并且我认为这样做是没有道理的。

另外,如果这是重复的,则对不起。我找不到任何主题。


阅读 221

收藏
2020-11-16

共1个答案

小编典典

不,它没有更高的效率-正是由于您提到的过载。此外,在通话toString上的String非常快,所以即使没有过载的差别就无法衡量。

但是,您的教授不希望像这样进行调用是正确的System.out.println(object.toString());,但原因有所不同:由于不需要调用,因此您的代码读者可能会感到困惑。

2020-11-16