When is StringBuffer/StringBuilder not implicitly used by the compiler?

前端 未结 1 1713
南旧
南旧 2021-01-04 21:01

I\'ve heard that the compiler (or was it the JVM?) will automatically use a StringBuilder for some string concatenation. When is the right time to explicitly declare one?

相关标签:
1条回答
  • 2021-01-04 21:33

    The compiler will use it automatically for any string concatenation using "+".

    You'd usually use it explicitly if you wanted to concatenate in a loop. For example:

    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);
    

    Another situation would be where you wanted to build up a string over multiple methods, or possibly conditionalise some bits of the building. Basically, if you're not building the string in a single statement (where the compiler can help you) you should at least consider using StringBuilder.

    0 讨论(0)
提交回复
热议问题