Skip to content

Instantly share code, notes, and snippets.

@enshahar
Last active November 13, 2017 07:55
Show Gist options
  • Save enshahar/a35537a3b0061b6f106a96578cbb4e16 to your computer and use it in GitHub Desktop.
Save enshahar/a35537a3b0061b6f106a96578cbb4e16 to your computer and use it in GitHub Desktop.
[Effective Java] Rule 51. Use StringBuilder when you add strings
λ javac StringConcat.java
λ javap -c StringConcat.class
Picked up JAVA_TOOL_OPTIONS: -Xmx8g
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: ldc #2 // String
2: astore_1
3: iconst_0
4: istore_2
5: iload_2
6: aload_0
7: arraylength
8: if_icmpge 43
11: new #3 // class java/lang/StringBuilder
14: dup
15: invokespecial #4 // Method java/lang/StringBuilder."<init>":()V
18: aload_1
19: invokevirtual #5 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
22: aload_0
23: iload_2
24: aaload
25: invokevirtual #5 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
28: ldc #6 // String ,
30: invokevirtual #5 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
33: invokevirtual #7 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
36: astore_1
37: iinc 2, 1
40: goto 5
43: getstatic #8 // Field java/lang/System.out:Ljava/io/PrintStream;
46: aload_1
47: invokevirtual #9 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
50: new #3 // class java/lang/StringBuilder
53: dup
54: invokespecial #4 // Method java/lang/StringBuilder."<init>":()V
57: astore_2
58: iconst_0
59: istore_3
60: iload_3
61: aload_0
62: arraylength
63: if_icmpge 87
66: aload_2
67: aload_0
68: iload_3
69: aaload
70: invokevirtual #5 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
73: pop
74: aload_2
75: ldc #6 // String ,
77: invokevirtual #5 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
80: pop
81: iinc 3, 1
84: goto 60
87: getstatic #8 // Field java/lang/System.out:Ljava/io/PrintStream;
90: aload_2
91: invokevirtual #10 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
94: return
}
public class StringConcat {
public static void main(String[] args) {
String result = "";
for(int i=0; i<args.length; ++i) {
result += args[i] + ",";
}
System.out.println(result);
StringBuilder result2 = new StringBuilder();
for(int j=0; j<args.length; ++j) {
result2.append(args[j]);
result2.append(",");
}
System.out.println(result2);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment