パフォーマンス上の理由から、+=(String連結)の使用はお勧めしません。その理由は次のとおりです。Java Stringは不変であり、新しい連結が行われるたびに新しいものStringが作成されます(新しいものは、文字列プールに既にある古いものとは異なるフィンガープリントを持っています)。新しい文字列を作成すると、GCに負荷がかかり、プログラムの速度が低下します。オブジェクトの作成にはコストがかかります。
以下のコードは、それをより実用的かつ明確にする必要があります。 
public static void main(String[] args) 
{
    // warming up
    for(int i = 0; i < 100; i++)
        RandomStringUtils.randomAlphanumeric(1024);
    final StringBuilder appender = new StringBuilder();
    for(int i = 0; i < 100; i++)
        appender.append(RandomStringUtils.randomAlphanumeric(i));
    // testing
    for(int i = 1; i <= 10000; i*=10)
        test(i);
}
public static void test(final int howMany) 
{
    List<String> samples = new ArrayList<>(howMany);
    for(int i = 0; i < howMany; i++)
        samples.add(RandomStringUtils.randomAlphabetic(128));
    final StringBuilder builder = new StringBuilder();
    long start = System.nanoTime();
    for(String sample: samples)
        builder.append(sample);
    builder.toString();
    long elapsed = System.nanoTime() - start;
    System.out.printf("builder - %d - elapsed: %dus\n", howMany, elapsed / 1000);
    String accumulator = "";
    start = System.nanoTime();
    for(String sample: samples)
        accumulator += sample;
    elapsed = System.nanoTime() - start;
    System.out.printf("concatenation - %d - elapsed: %dus\n", howMany, elapsed / (int) 1e3);
    start = System.nanoTime();
    String newOne = null;
    for(String sample: samples)
        newOne = new String(sample);
    elapsed = System.nanoTime() - start;
    System.out.printf("creation - %d - elapsed: %dus\n\n", howMany, elapsed / 1000);
}
実行の結果を以下に報告します。 
builder - 1 - elapsed: 132us
concatenation - 1 - elapsed: 4us
creation - 1 - elapsed: 5us
builder - 10 - elapsed: 9us
concatenation - 10 - elapsed: 26us
creation - 10 - elapsed: 5us
builder - 100 - elapsed: 77us
concatenation - 100 - elapsed: 1669us
creation - 100 - elapsed: 43us
builder - 1000 - elapsed: 511us
concatenation - 1000 - elapsed: 111504us
creation - 1000 - elapsed: 282us
builder - 10000 - elapsed: 3364us 
concatenation - 10000 - elapsed: 5709793us
creation - 10000 - elapsed: 972us
1つの連結の結果を考慮せず(JITはまだその仕事をしていません)、10回の連結でもパフォーマンスのペナルティは関連しています。何千もの連結に対して、その違いは非常に大きくなります。
この非常に迅速な実験から学んだ教訓(上記のコードで簡単に再現可能):+=いくつかの連結が必要な非常に基本的なケース(たとえ新しい文字列の作成はとにかくコストがかかり、 GC)。