JVM method translate to bytecode
特殊方法
xxx
默认构造函数
aload_0
invokespecial #1 // Method java/lang/Object."<init>":()V
return
其中,
- 构造函数会通过invokevirtual被调用,这里aload_0可以取到this
- 构造函数中会去调用父类的构造函数
statements
创建对象
HelloWorld s = new HelloWorld();
new #5 // class HelloWorld
dup
invokespecial #6 // Method "<init>":()V
变量赋值
HelloWorld s = new HelloWorld();
new #5 // class HelloWorld
dup
invokespecial #6 // Method "<init>":()V
astore_1
值得注意的是,因为局部变量表中是按照slot来的,所以存储long和double的时候会占用两个slot,这样store的slot序号跟局部变量的顺序并不是完全对应的。