# 二、字节码

# 1. 知道字节码吗?字节码指令集都有哪些? Integer x=5, int y=5, 比较 x==y 都经过哪些步骤?

     0: iconst_1							//常量1
     1: invokestatic  #2      // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     4: astore_1              // a = 1
     5: iconst_1							//常量1
     6: istore_2							// b = 1
     7: getstatic     #3      // Field java/lang/System.out:Ljava/io/PrintStream;
    10: aload_1								// load a
    11: invokevirtual #4      // Method java/lang/Integer.intValue:()I,将 Integer 变成数值
    14: iload_2								// load b
    15: if_icmpne     22			// a 和 b 进行比较
    18: iconst_1							// 如果 if 成立,那就来 true
    19: goto          23
    22: iconst_0							//如果 if 不成立,就来 false
    23: invokevirtual #5      // Method java/io/PrintStream.println:(Z)V
    26: return

先 load 常量1,然后用 invokestatic 调用 Intger 的静态方法 valueOf,然后将 1 赋值给 a。

再 load 常量1,然后将 1 赋值给 b。

然后 load a 和 load b,进行比较。

上次更新: 8/28/2022, 11:43:26 PM