当前位置: 首页 > 面试题库 >

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

吴浩博
2023-03-14
问题内容

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

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

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

System.out.println(object);

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

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


问题答案:

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

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



 类似资料:
  • 问题内容: 谁能详细解释在我的测试代码段中使用实例时重载方法被调用的原因? 这里涉及虚拟方法或Java中方法重载/解析的特殊性吗?是否直接引用Java Lang Spec?哪个术语描述了这种行为?非常感谢。 问题答案: JLS在§8.4.9重载中规定: 调用方法时(第15.12节),实际参数(和任何显式类型参数)的数量以及参数的 编译时类型 在编译时用于确定将要调用的方法的签名( §15.12.2

  • 根据这个留档, 这些对象中的每一个的字符串表示都按照列出的顺序附加在一起并输出。 同样根据答案 x将对象x强制为一个字符串,即[object object]: 所以,我的问题是 如果我这样做 因此,在第一种情况下,它只打印对象(不调用方法)。 但是在第二种情况下,它不强制而是简单地打印原始值。为什么会这样呢? 哪种方法不支持调用以打印对象? 请注意-这不是这个问题的重复。

  • 我这样做对吗?我生成了toString()。

  • 问题内容: 我想念什么?为什么我必须在下面使用而不是?它与泛型类型擦除有关系吗? 问题答案: 这与类型擦除无关。 查看错误消息: 的类有两个匹配由预期的功能的界面,方法方法。一个是静态的一个参数,而另一种是重写方法的。 编译器不知道您是否要执行此操作: 或这个 :

  • 本文向大家介绍java中的tostring方法的具体用法,包括了java中的tostring方法的具体用法的使用技巧和注意事项,需要的朋友参考一下 我们知道调用对象的toString()方法会直接输出对象的属性信息,但是具体怎么实现的?以及如何更好地实现它呢?现在来学习下。 通过java文档我们能知道,toString()方法在Object类里定义的,其返回值类型为String类型,返回类名和它的

  • 问题内容: 基本上,这就是我要实现的目标。 classname @ address(?)[原始],对象的名称,对象的年龄 问题,被递归调用。 我不能打电话,因为那不是我想要的。我想叫原件。 这个 由于明显的原因而无法正常工作。 我已经精疲力竭了,一旦方法被重写,可以做到这一点吗?即所谓的原始实现? (我的编辑)基本上,我需要的是:覆盖toString以显示’this’对象的两个属性,并且我也想让’