参考自【零基础 快速学Java】韩顺平 零基础30天学会Java_哔哩哔哩_bilibili
属性机制:
第一行,Cat cat = new Cat(); 首先会加载Cat类信息到方法区(属性,方法),随后new关键字会在堆里开空间(生成地址),并且地址指向的属性赋数据类型的默认值。创建成功后栈中生成一个对象,指向堆区对应的地址。
第二三四行,通过cat找到堆中对应地址,然后找到name,age,color各个对应的地址,其中name和color非基本数据类型,他们在堆中会生成为地址,并在方法区生成地址所对应的值。而基本数据类型则直接在堆中修改值。
方法机制:
首先,主方法会在栈中开辟一个空间,为了方便解释可以把这个空间称作main栈
第一行, Person p1 = new Person(); 在main栈中开辟p1指向堆中对象
第二行, int returnRes = p1.getSum(10, 20);,调用getSum方法,开辟一个与main栈独立的栈空间,并在里面执行getSum方法,将return的数据传给 returnRes
总结,1.程序执行到方法时,会开辟一个独立的空间(栈空间)
2.当main方法执行完毕,整个程序退出