源码:
class T {
int m = 8;
}
T t = new T();
汇编码:
0 new #2 <T>
3 dup
4 invokespecial #3 <T.<init>>
7 astore_1
8 return
new #2
申请内存,在堆里面创建一个新对象。
半初始化,新建对象中的m值是0。
dup
复制操作,因为invokespecial会消耗一份引用,所以先复制一份
invokespecial
4 invokespecial #3 <T.>
init是调用它的构造方法。
此时对象中的m值是8。
astore_1
将符号和对象建立关联,即t和堆中的对象。
其实很简单,今天看一个视频说了半天。。。