The concatString() method is made up of 15 instructions.  

A total of five objects are created.  Two Strings at instructions 0 and 4.  A temporary StringBuilder at instruction 10.  Two more Strings at instructions 21 and 26.

The other two methods have only 10 instructions each and only create 3 objects.  A StringBuilder/StringBuffer at instruction 0.  Two Strings at instructions 4 and 11.


Output from javap -c examples.ConcatTest

----------------------------------
Compiled from "ConcatTest.java"
public class examples.ConcatTest {
  public examples.ConcatTest();
    Code:
       0: aload_0
       1: invokespecial #8                  // Method java/lang/Object."<init>":()V
       4: return

  public static void main(java.lang.String[]);
    Code:
       0: invokestatic  #16                 // Method concatString:()V
       3: invokestatic  #19                 // Method concatStringBuffer:()V
       6: invokestatic  #22                 // Method concatStringBuilder:()V
       9: return

  static void concatString();
    Code:
       0: new           #27                 // class java/lang/String
       3: dup
       4: ldc           #29                 // String Java
       6: invokespecial #31                 // Method java/lang/String."<init>":(Ljava/lang/String;)V
       9: astore_0
      10: new           #34                 // class java/lang/StringBuilder
      13: dup
      14: aload_0
      15: invokestatic  #36                 // Method java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
      18: invokespecial #40                 // Method java/lang/StringBuilder."<init>":(Ljava/lang/String;)V
      21: ldc           #41                 // String Programming
      23: invokevirtual #43                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      26: invokevirtual #47                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      29: astore_0
      30: return

  static void concatStringBuffer();
    Code:
       0: new           #53                 // class java/lang/StringBuffer
       3: dup
       4: ldc           #29                 // String Java
       6: invokespecial #55                 // Method java/lang/StringBuffer."<init>":(Ljava/lang/String;)V
       9: astore_0
      10: aload_0
      11: ldc           #41                 // String Programming
      13: invokevirtual #56                 // Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
      16: pop
      17: return

  static void concatStringBuilder();
    Code:
       0: new           #34                 // class java/lang/StringBuilder
       3: dup
       4: ldc           #29                 // String Java
       6: invokespecial #40                 // Method java/lang/StringBuilder."<init>":(Ljava/lang/String;)V
       9: astore_0
      10: aload_0
      11: ldc           #41                 // String Programming
      13: invokevirtual #43                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      16: pop
      17: return
}