Originariamente inviato da zip2k
... si, so che bastava usare l'operatore + ... pero' funziona in modo leggermente differente in memoria lo StringBuffer/StringBuilder rispetto all'operatore +, e' solo una questione di ottimizzazione.
L'unica differenza sta nel come viene istanziato lo StringBuffer/StringBuilder.

Con l'operatore +, il codice generato istanzia sempre prima un StringBuffer/StringBuilder vuoto (usa il costruttore senza argomenti) e poi fa tutte le append.
Se usi esplicitamente un StringBuffer/StringBuilder, allora puoi istanziarlo passando al costruttore già una stringa, cosa che ti permette di risparmiare un append rispetto all'operatore +.

Ma la differenza finisce qui e basta. Se la prima parte da concatenare non fosse una stringa, dovresti sostanzialmente scrivere lo stesso identico codice che genera il compilatore per l'operatore +.

Quindi è inutile che mi vieni a sbandierare la tua "ottimizzazione", quando l'uso dell'operatore +, salvo casi particolari, è più semplice, leggibile e pratico nel 99% dei casi.