stringBuillder append(CONST) 和 append("new string") 的区别

问题描述

我能否通过以下两条语句获得有关内存和运行时开销的具体说明?

  1. String CONST = "字符串常量"; StringBuilder sb1 = new StringBuilder();
    sb1.append(const);

  2. StringBuilder sb2 = new StringBuilder();
    sb2.append("字符串常量");

第二个是否创建字符串对象并添加到字符串池中? 是否有任何场景(也考虑许多字符串附加)可以证明一个比另一个更好?

解决方法

这两个版本在内存或运行时开销上没有区别。

使用看起来更具可读性或可维护性的任何一种。如果您在许多地方重复使用相同的字符串常量,该常量很长,或者可能会发生变化,那么提取一个常量可能是合适的。

,

关于运行时开销,运行两种方法的模拟产生几乎相同的结果。

我的测试进行了 10,000,000 次迭代,运行时间为:

  • 方法 1 - 95109 毫秒(平均约 9.5 纳秒)
  • 方法 2 - 95002 毫秒(平均约 9.5 纳秒)

所以绝对没有明显的性能差异。


因此,正如@LouisWasserman 在他们的回答中所说,只需使用使您的代码保持清晰易读的代码即可。