gpt4 book ai didi

java - 哪种 toString 技术更有效?

转载 作者:行者123 更新时间:2023-12-02 00:35:25 24 4
gpt4 key购买 nike

我有一个名为 Zebra 的类(class)(不是她的真名)。 Zebra 重写 toString 方法以提供她自己的复杂模糊字符串化。

哪个对 Zebra 实例进行字符串化更有效?假设我必须在每次 session 中执行数百万次这种字符串化。

  1. zebra.toString()
  2. ""+斑马
  3. 静态字符串空白(单例)
    BLANK+zebra(多次执行)

斑马线的值不保证相同的地方。

我猜测答案可能是 - 不用担心:编译器使它们全部等效。如果这不是答案,请描述使它们不同的实例化过程。 (2) 和 (3) 可能相同,因为编译器会将所有相似的字符串分组并将它们分配给单个引用。

通常,我会使用 ""+zebra 因为我懒得输入 zebra.toString()

收件人:澄清。

我见过一些被批评的问题,比如“你为什么要这样做,这是不切实际的”如果每个程序员都因为没有实际值(value)而避免提出问题,或者每个数学家都这样做 - 那将是结束人类。

如果我编写迭代例程,差异可能会太小。我对实验结果的兴趣不如对过程差异的兴趣:

例如,zebra.toString() 只会调用一个 toString,而 "+zebra 会调用额外的字符串实例化和额外的字符串连接。这会降低效率。或者是这样。或者编译器会取消该操作吗? .

如果您的答案集中在编写迭代例程,其结果无法解释编译器或机器进程,请不要回答。

优秀程序员的美德=懒惰写代码但不懒惰思考。

最佳答案

第一点效率更高。

其他选项创建 StringBuilder 的实例,向其附加一个空字符串,调用 zebra.toString,将其结果附加到 StringBuilder,然后将 StringBuilder 转换为字符串。这是很多不必要的开销。只需自己调用 toString 即可。

顺便说一句,如果您想将标准类型(例如整数)转换为字符串,这也是正确的。不要写

String s=""+n; // where "n" is an Integer

一定要写

String s=n.toString();

String s=String.valueOf(n);

关于java - 哪种 toString 技术更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7957912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com