JVM method translate to bytecode:修订间差异
第48行: | 第48行: | ||
astore_1 | astore_1 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
值得注意的是,因为局部变量表中是按照slot来的,所以存储long和double的时候会占用两个slot,这样store的slot序号跟局部变量的顺序并不是完全对应的。 | |||
[[Category:JVM]] | [[Category:JVM]] |
2021年4月20日 (二) 08:58的版本
特殊方法
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序号跟局部变量的顺序并不是完全对应的。