2.对象内存图
2.1对象内存图(单个对象)
调用成员变量
调用main方法,创建一个对象名字为s的Student类,系统分配一个内存
s通过001指向了堆内存
输出s,输出s的地址
输出s.name,通过s的地址001找到堆内存的name,并将其内容输出
输出s.age,通过s的地址001找到堆内存的age,并将其内容输出
通过s的地址001找到name,将其内容更改为“张曼玉”
通过s的地址001找到age,将其内容更改为30
调用成员方法
调用study方法,study方法加载到栈内存,调用对象为main方法中创建的s对象,地址值为001
输出好好学习,执行完毕后从栈内存消失
调用doHomework方法,doHomework方法加载到栈内存,调用对象为main方法中创建的s对象,地址值为001
执行完毕后doHomework方法后从栈内存消失,接着在往下执行,main方法执行完毕后从栈内存消失
2.2对象内存图(多个对象)
2.3对象内存图(多个对象指向相同)
mian方法进来,创建Student对象,地址值为001,将地址赋给s1
将s1的name改为林青霞,s1的age修改为30,接着输出s1的name值和s1的age值
s2调入main方法中,s2的值等于s1的值,s2=001,s1和s2都指向堆内存001
通过s2的值001将name值修改为张曼玉
s1的值和s2的值都是001,所以指向的是001
当多个对象指向同一个对象时,一个对象修改了堆内存,另一个对象同样修改