通過する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