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