我的一位教授曾经说过,绝不应该执行以下代码:
System.out.println(object.toString());
他说(我相信引用为“ Effective Java”)会引起重复调用。由于print语句调用对象的toString方法,因此两次调用toString方法的效率较低。首选方法是仅使用:
System.out.println(object);
显然,这种方式在代码中看起来更好,并且可以节省时间。无论如何,我总是会这样做,但是我的问题是“这实际上更有效吗?”。在查看PrintStream文档时,已重载了print方法以将String作为参数(如果首先调用toString方法,情况将会如此)。我没有看到该版本的print方法在何处调用输入参数的toString方法,并且我认为这样做是没有道理的。
另外,如果这是重复的,则对不起。我找不到任何主题。
不,它没有更高的效率-正是由于您提到的过载。此外,在通话toString上的String非常快,所以即使没有过载的差别就无法衡量。
toString
String
但是,您的教授不希望像这样进行调用是正确的System.out.println(object.toString());,但原因有所不同:由于不需要调用,因此您的代码读者可能会感到困惑。
System.out.println(object.toString());