StringBuffer / StringBuilder何时未被编译器隐式使用?

时间:2010-11-23 23:32:19

标签: java concatenation string-concatenation

我听说编译器(或它是JVM?)会自动使用StringBuilder进行字符串连接。什么时候才能明确宣布一个?我不需要StringBuffer来保证线程安全。

感谢。

1 个答案:

答案 0 :(得分:14)

编译器将使用“+”自动将其用于任何字符串连接。

如果你想在循环中连接,你通常会明确地使用它。例如:

StringBuilder builder = new StringBuilder();
for (String name : names)
{
    builder.append(name);
    builder.append(", ");
}
if (builder.length() > 0)
{
    builder.setLength(builder.length() - 2);
}
System.out.println("Names: " + builder);

另一种情况是你想在多个方法上建立一个字符串,或者可能是条件化建筑物的某些部分。基本上,如果您没有在单个语句中构建字符串(编译器可以帮助您),您至少应该考虑使用StringBuilder