Skip to content

Instantly share code, notes, and snippets.

@osak
Created January 24, 2013 16:47
Show Gist options
  • Save osak/4624878 to your computer and use it in GitHub Desktop.
Save osak/4624878 to your computer and use it in GitHub Desktop.
Compiled from "A.java"
public class A {
public A();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
// String s = null;
0: aconst_null
1: astore_1
// s += "A";
2: new #2 // class java/lang/StringBuilder
5: dup
6: invokespecial #3 // Method java/lang/StringBuilder."<init>":()V
9: aload_1
// 型がStringなのでそっちを呼ぶ
// See also: http://docs.oracle.com/javase/6/docs/api/java/lang/StringBuilder.html#append(java.lang.String)
10: invokevirtual #4 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
13: ldc #5 // String A
15: invokevirtual #4 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
18: invokevirtual #6 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
// s = null + "A"
21: astore_1
22: new #2 // class java/lang/StringBuilder
25: dup
26: invokespecial #3 // Method java/lang/StringBuilder."<init>":()V
29: aconst_null
// ただのnullはObjectで呼ぶ
// See also: http://docs.oracle.com/javase/6/docs/api/java/lang/StringBuilder.html#append(java.lang.Object)
30: invokevirtual #7 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
33: ldc #5 // String A
35: invokevirtual #4 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
38: invokevirtual #6 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
41: astore_1
42: return
}
public class A {
public static void main(String[] args) {
String s = null;
s += "A";
s = null + "A";
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment