内存分成三块,栈,堆,代码区。在执行Person p=new Person()时,person类的静态变量,静态方法,普通方法会被放入 代码区,引用变量p会在栈里面,堆里面会生成描述类数据的对象,这些数据执行默认初始化。接着是构造代码块的执行,然后在构造函数调用时会追溯person类的父类直到OBJECT类,最后再自上而下的显式初始化堆里面的数据。最后在内存里的形态就是:栈里面有个p指向Person对象,堆里面依次存在着person对象和它所有的父类对象(或者说是对父类数据的描述,我不知道在这里称父类对象对不对,就是在调用父类构造函数时产生的东西,也可能没有东西产生,在调用到父类构造函数时,会不会在堆里开空间,还是和person类对象共用同一个空间,我疑惑的地方就是这里,不知道该怎么理解才对),还有就是代码区里,那些person类的方法 和它父类的方法都是怎么分布的 |