程序执行从main方法开始,因此main方法会先加载到栈内存
左边的Student s在栈内存存储,new操作会在堆内存开辟空间,成员变量的放置方式与数组类似,默认值中String默认值为null,int默认值为0
这样的操作完成后,地址001(假设地址为001)赋值给变量s,001便指向堆内存学生对象
当打印s时,就是打印001地址值
输出成员变量,s指向栈内存,通过地址001指向堆内存,name访问的是堆内存name对应的值null,s.age原理类似
修改成员变量的值,s位于栈内存,通过001指向堆内存,将name赋值,则将原始的null修改为张曼玉
调用成员方法,study加载到栈内存,说明:我们的s是main中创建的s对象
这个s的地址是001,调用时,就会输出好好学习
当执行完毕,study就会从栈内存消失
当执行到最后,main方法也会从栈内存消失
运行代码:
多个对象与单个对象类似,自行理解,不再赘述
调用属性
调用方法
第2个对象
调用方法,这里的s2的地址是002
测试
运行:
注意这里是将s1的地址赋值给s2,所以s1,s2指向的是同一个对象
测试:
运行:
本文作者为BUG之神,转载请注明。