内存图 教你以最简单的方式读懂这张内存图

在这里插入图片描述
分析:

  1. 方法区先加载Phone.classDemoPhoneOne类文件

  2. 程序从DemoPhoneOne类中的main方法开始执行,则main方法进栈(压栈)

  3. 在栈中main方法创建一个了一个Phone类型的变量one,用来保存堆中创建的对象的地址值

  4. new的一个对象one保存在堆中(只要是new的东西都会在堆中)

  5. 保存的对象中有成员变量(并赋给它们一个默认值)也有成员方法但其保存的是地址值(方法区中成员方法call()和sendMessage( )的地址值)

  6. 在堆中创建的一个对象也会有一个地址,其会交给栈中main方法中的 Phone one保存

  7. 赋值:在栈中main方法中执行这些语句

    one.brand = "苹果";
    one.price = 8388.0;
    one.color = "黑色";
    
  8. 其会顺着Phone one储存的地址值找到堆中的成员变量,将值赋给它们

  9. 调用方法one.call();和one.sendMessage(); 会使其进栈,待执行完后这些方法会自动出栈(弹栈)

注:每执行完一个方法,会使其出栈,之后才往下执行其他的方法

  1. 最后程序中所有的语句执行完后,main方法才会出栈(弹栈)

注:以上分析内容属于个人理解,如果有误,请指正

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值