Java基础_103. 单个对象(内存图分析)

单个对象的内存图分析:

 首先将main 方法加载到栈内存中.

接下来, 创建对象.

左边的Student s, 就会在栈内存中出现.

 new 的Student() 类中也有两个成员变量和两个成员方法.

这个new 的动作就会再堆内存去开辟空间.

成员变量在堆内存中的存放情况如下图所示, 成员变量的默认值规则, 同数组的默认值规则是一样的.

 这块堆内存的地址值是001.

然后右边的new Student(), 就把001赋值给左边的Student s , 赋值后, 就相当于

Student s = 001

 那么s 就通过001 指向了堆内存这个学生对象, 

这样之后, 创建对象就算做完了.

下面这行代码要输出s 的值, 而s 的值就是001 这个地址值, 所以这次在控制台输出地址值001.

接下来, 来使用成员变量.

main 方法里面这个s , 通过001指向堆内存中对应地址值001.

 然后name 访问的是堆内存中的name 对应的值, 也就是null.

所以s.name 这个值是null.

 同理s.age 的值为0.

 然后把这两个值进行字符串的拼接, 输出 null, 0.

 接下来给成员变量赋值.

name 的值修改为 "张曼玉"

 同理age 的值修改为28.

再次进行字符串的拼接, 输出的是"张曼玉, 28"

 接下来调用成员方法, 

 一调用study 方法, study 方法就加载到栈内存.

这个s 其实就是main 方法中创建的s 对象, 所以调用者s 的地址值是001. 

 进入study 这个方法之后, 就会再控制台输出"好好学习"

当study 这个方法执行完毕, 就会从栈内存中消失.

 同理, doHomework 这个方法输出了"多做练习".

 方法调用完毕, 也会从栈内存中消失.

再往下执行,main 方法也执行完毕, 然后main 方法也会从内存中消失.

  

 代码演练:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值