Java 字符串串联效率

2022-09-01 21:55:33

这不好吗?

(想象一下它更大)

int count;
//done something to count
String myString = "this " + "is " + "my " + "string" + "and " + this.methodCall() + " answer " + "is : " + count;

还是在StringBuilder/StringBuffer中更好?


答案 1

Java编译器会将其转换为StringBuilder,以提高重复字符串串联的性能。http://java.sun.com/docs/books/jls/third%5Fedition/html/expressions.html#15.18.1.2

当你在循环编译器中连接时,它不能单独替换StringBuilder,这是你应该考虑从串联到StringBuilder的时候。


答案 2

Javadoc for StringBuffer 从 Java 5.0 开始声明

StringBuilder 类通常应优先于此类使用,因为它支持所有相同的操作,但它更快,因为它不执行同步。

编译器将合并字符串文本,因此它与写入相同

String myString = "this is my stringand " + this.methodCall() + " answer is : " + count;

这与

String myString = new StringBuilder().append("this is my stringand ").append(methodCall()).append(" answer is : ").append(count).toString();

我不会担心性能,除非你需要从系统中消除垃圾,在这种情况下,你不会在这里使用字符串。(您极不可能担心它)