Here is the test code: public class StringStuff { private String test = "test"; public String testBuilder(){ return new StringBuilder(test).append("stuff").toString(); } public String testCat(){ return test+"stuff"; } public static void main(String[] args) { } } test builder does this: 0 new #4 3 dup 4 aload_0 5 getfield #3 8 invokespecial #5 > 11 ldc #6 13 invokevirtual #7 16 invokevirtual #8 19 areturn test cat does this: 0 new #4 3 dup 4 invokespecial #9 > 7 aload_0 8 getfield #3 11 invokevirtual #7 14 ldc #6 16 invokevirtual #7 19 invokevirtual #8 22 areturn