Skip to content

Instantly share code, notes, and snippets.

@Hafthor
Last active September 14, 2015 21:48
Show Gist options
  • Save Hafthor/c6ed4223d6c1b515a999 to your computer and use it in GitHub Desktop.
Save Hafthor/c6ed4223d6c1b515a999 to your computer and use it in GitHub Desktop.
Java StringConcat vs StringBuilder
// StringConcat.java
public class StringConcat {
public static void main(String[] args) {
String abc = getA() + getB() + getC();
System.out.println(abc);
}
private static String getA() {
return "ABC";
}
private static String getB() {
return "123";
}
private static String getC() {
return "XYZ";
}
}
Compiled from "StringConcat.java"
public class StringConcat {
public StringConcat();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: new #2 // class java/lang/StringBuilder
3: dup
4: invokespecial #3 // Method java/lang/StringBuilder."<init>":()V
7: invokestatic #4 // Method getA:()Ljava/lang/String;
10: invokevirtual #5 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
13: invokestatic #6 // Method getB:()Ljava/lang/String;
16: invokevirtual #5 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
19: invokestatic #7 // Method getC:()Ljava/lang/String;
22: invokevirtual #5 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
25: invokevirtual #8 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
28: astore_1
29: getstatic #9 // Field java/lang/System.out:Ljava/io/PrintStream;
32: aload_1
33: invokevirtual #10 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
36: return
}
// StringBuilder.java
public class StringBuilder {
public static void main(String[] args) {
String abc = new java.lang.StringBuilder().append(getA()).append(getB()).append(getC()).toString();
System.out.println(abc);
}
private static String getA() {
return "ABC";
}
private static String getB() {
return "123";
}
private static String getC() {
return "XYZ";
}
}
Compiled from "StringBuilder.java"
public class StringBuilder {
public StringBuilder();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: new #2 // class java/lang/StringBuilder
3: dup
4: invokespecial #3 // Method java/lang/StringBuilder."<init>":()V
7: invokestatic #4 // Method getA:()Ljava/lang/String;
10: invokevirtual #5 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
13: invokestatic #6 // Method getB:()Ljava/lang/String;
16: invokevirtual #5 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
19: invokestatic #7 // Method getC:()Ljava/lang/String;
22: invokevirtual #5 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
25: invokevirtual #8 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
28: astore_1
29: getstatic #9 // Field java/lang/System.out:Ljava/io/PrintStream;
32: aload_1
33: invokevirtual #10 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
36: return
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment