问题描述
我能否通过以下两条语句获得有关内存和运行时开销的具体说明?
-
String CONST = "字符串常量"; StringBuilder sb1 = new StringBuilder();
sb1.append(const); -
StringBuilder sb2 = new StringBuilder();
sb2.append("字符串常量");
第二个是否创建字符串对象并添加到字符串池中? 是否有任何场景(也考虑许多字符串附加)可以证明一个比另一个更好?
解决方法
这两个版本在内存或运行时开销上没有区别。
使用看起来更具可读性或可维护性的任何一种。如果您在许多地方重复使用相同的字符串常量,该常量很长,或者可能会发生变化,那么提取一个常量可能是合适的。
,关于运行时开销,运行两种方法的模拟产生几乎相同的结果。
我的测试进行了 10,000,000 次迭代,运行时间为:
- 方法 1 - 95109 毫秒(平均约 9.5 纳秒)
- 方法 2 - 95002 毫秒(平均约 9.5 纳秒)
所以绝对没有明显的性能差异。
因此,正如@LouisWasserman 在他们的回答中所说,只需使用使您的代码保持清晰易读的代码即可。