Know it all #1: You must concatenate StringBuffer, not String in order to achieve best performance. Convert to String when finished. Know it all #2: No you don't. The JIT optimizes concatenation for you. All strings are 256 in length and assembled one character at a time. Concatenating 512 Strings... Concatenating 512 buffers and turning each into a String... StringBuffer concat took 56ms String concat took 23488ms Know it all #1 was correct. Build using a buffer first, then convert to a String.