JAVA的对象创建与调用的内存解析

在这里插入图片描述
在这里插入图片描述


两个对象的内存调用


在这里插入图片描述
调用的步骤跟第一个对象的调用是一样的,执行到第二个对象的时候就跟第一个是一样的。


对象作为参数的内存图解


在这里插入图片描述

这里的showAge 调用的stu是student的类的引用,这里比C++优化了,C++如果不加引用&符号的话,它是采用一个对象的复本极其占用内存,但是JAVA里直接用的是引用,采用指针调用数据,很香!!!


JAVA中使用变量的规则


在这里插入图片描述
其中Student类中的study方法内置已有姓名的,所以不需要从方法外取用值张三丰。小黑是局部变量,张三丰是成员变量。小黑的储存在栈区,随着方法消失而消失,张三丰储存在堆区,随着类的消亡而失去。


JAVA中继承的内存管理


在这里插入图片描述
第一行代码初始化完毕

在这里插入图片描述
子类中的有颜色就近直接给子类附上红色,

在这里插入图片描述
子类的eat方法中还有赋值,将子类的颜色赋给父类的颜色。

在这里插入图片描述
为什么要先初始化父类呢?因为先定义子类的对象,进入子类后,发现没有父类,然后在方法区就压入父类,然后在压入子类。

在这里插入图片描述
多态类的内存图:
第一部分内存调用是跟继承类的结果差不多的。都先初始化,从方法区指向堆区开辟初始化数据
第二部分:
当执行到a.eat()方法的这一行的时候,找到堆中的基类中方法的地址0x066,然后到方法区0x066去执行,但是其中基类的方法被子类的方法重写了,存在一个虚拟方法表,会调用子类的方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万小猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值