在我的项目中有一些使用StringBuffer对象的代码片段,其中一小部分如下
StringBuffer str = new StringBuffer();
str.append("new " + "String()");
所以我对 append 方法和 + 运算符的使用感到困惑。
即下面的代码可以写成
str.append("new ").append("String()");
那么上面的两行是一样的吗?(功能上是但是)或者它们有什么特别的用法吗?即性能或可读性或???
谢谢。
最佳答案
在那种情况下,使用第一种形式效率更高——因为编译器会将其转换为:
StringBuffer str = new StringBuffer();
str.append("new String()");
因为它连接常量。
还有一些更一般的要点:
- 如果这些表达式中的任何一个不是常量,您最好(性能方面)两次调用
append
,以避免无缘无故地创建中间字符串< - 如果您使用的是最新版本的 Java,通常首选
StringBuilder
- 如果您要立即附加一个字符串(并且您在构建时知道它是什么),您可以将它传递给构造函数
关于java - 在 StringBuffer 中追加或 + 运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3421720/