通過するclassファイルで答えを検索
2894 ワード
/**
*
* @author zhaoguoli
* @version V1.0 2012-3-6 11:37:55
*/
public class StringTest {
/**
*
* @param args
*/
public static void main(String[] args) {
String a = null + "a";
String aa = null + "a";
System.out.println(a == aa);
// false
String b = "null" + "a";
String bb = "null" + "a";
System.out.println(b == bb);
// true
}
}
表示classファイル
public StringTest();
0 aload_0 [this]
1 invokespecial java.lang.Object() [8]
4 return
Line numbers:
[pc: 0, line: 8]
Local variable table:
[pc: 0, pc: 5] local: this index: 0 type: com.sunsmile.StringTest
// Method descriptor #15 ([Ljava/lang/String;)V
// Stack: 3, Locals: 5
public static void main(java.lang.String[] args);
0 new java.lang.StringBuilder [16]
3 dup
4 invokespecial java.lang.StringBuilder() [18]
7 aconst_null
8 invokevirtual java.lang.StringBuilder.append(java.lang.Object) : java.lang.StringBuilder [19]
11 ldc <String "a"> [23]
13 invokevirtual java.lang.StringBuilder.append(java.lang.String) : java.lang.StringBuilder [25]
16 invokevirtual java.lang.StringBuilder.toString() : java.lang.String [28]
19 astore_1 [a]
20 new java.lang.StringBuilder [16]
23 dup
24 invokespecial java.lang.StringBuilder() [18]
27 aconst_null
28 invokevirtual java.lang.StringBuilder.append(java.lang.Object) : java.lang.StringBuilder [19]
31 ldc <String "a"> [23]
33 invokevirtual java.lang.StringBuilder.append(java.lang.String) : java.lang.StringBuilder [25]
36 invokevirtual java.lang.StringBuilder.toString() : java.lang.String [28]
39 astore_2 [aa]
40 getstatic java.lang.System.out : java.io.PrintStream [32]
43 aload_1 [a]
44 aload_2 [aa]
45 if_acmpne 52
48 iconst_1
49 goto 53
52 iconst_0
53 invokevirtual java.io.PrintStream.println(boolean) : void [38]
56 ldc <String "nulla"> [44]
58 astore_3 [b]
59 ldc <String "nulla"> [44]
61 astore 4 [bb]
63 getstatic java.lang.System.out : java.io.PrintStream [32]
66 aload_3 [b]
67 aload 4 [bb]
69 if_acmpne 76
72 iconst_1
73 goto 77
76 iconst_0
77 invokevirtual java.io.PrintStream.println(boolean) : void [38]
80 return