一行代码、举个例子
Student student = new Student();
这一行代码其实做了三件事情:
- step1:为对象分配内存空间
- step2:调用构造器,对象初始化
- step3:讲对象的引用地址保存到栈中的student变量中
【注意】
- new Student(); 这段代码会将step1和step2两步执行,两步是绑定的;
- 在内存中,指令重排的条件是:“不影响代码前后的依赖关系下发生”,因此这个时候内存的指令重排可能会导致上面的step2和step3顺序进行重排变成 1-3-2,这个时候有一定的可能,对象的引用地址存到变量中进行调用的时候,对象还没进行初始化…针对这点可以使用volitail禁止指令重排【之后再详细聊聊这件事】