Last active
November 13, 2017 07:55
-
-
Save enshahar/a35537a3b0061b6f106a96578cbb4e16 to your computer and use it in GitHub Desktop.
[Effective Java] Rule 51. Use StringBuilder when you add strings
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
λ 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 | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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