1. 字节码查询
-
查看一下idea是否安装了,一般都安装了
-
编译一下,生成target
-
点击View下面的Show ByteCode即可
其实你看到的字节码是java加工多的,可以看下这个类,原生都是数字
以 helloWql方法字节码解释:
public helloWql(Ljava/lang/String;)V
L0
LINENUMBER 9 L0
GETSTATIC java/lang/System.out : Ljava/io/PrintStream;
LDC "name"
INVOKEVIRTUAL java/io/PrintStream.println (Ljava/lang/String;)V
L1
LINENUMBER 10 L1
RETURN
L2
LOCALVARIABLE this Lcom/wql/Test; L0 L2 0
LOCALVARIABLE name Ljava/lang/String; L0 L2 1
MAXSTACK = 2
MAXLOCALS = 2
- helloWql 是方法名,和java里面的方法名一致;
- Ljava/lang/String; 代表参数类型
- V 代表返回结果,原来的方法是void ,对应也就是V
- LINENUMBER 9 代表第9行代码
- GETSTATIC 获取变量的指令
- LDC 表示当前我要从常量池里面加载一个变量name
- INVOKEVIRTUAL 调用PrintStream方法
- RETURN 虽然方法里面没写RETURN 但是是存在的
- L2 :局部变量的描述:
- 第一个局部变量 this
- 第二个局部变量 com/wql/Test
- MAXSTACK 最大的栈
- MAXLOCALS 最大的局部变量