引用型变量,方法,对象在内存中的调用情况

1.引用类型的参数传递在内存中的使用情况 

 

变量名里存的是成员变量的地址存于栈内存中,成员变量里存的是数据存于堆内存中,两个变量同时存数组的地址,改变任意一个变量名下的成员值,另一个变量的成员值也会发生相应的改变。

2.方法的调用内存流程

 

只有在main方法里声明函数才可以调用函数。内存中的运行流程是:1.程序以class文件存在于方法区(文件里封装了所有的方法) 2.程序执行第一句,首先main方法调入栈内存 3.程序读声明方法语句之后把study方法调入内存 4.程序进入study方法中开始执行第一句,把eat方法调入占内存4.程序执行eat方法 5.eat方法执行完成后出占内存 6.程序执行输出学习的语句 7.程序调入sleep方法进入栈内存 8.sleep方法执行结束后出栈内存 9.study方法执行结束,出栈内存 10.main方法执行结束,出栈内存,程序执行结束

3.对象的调用内存流程

 

1.class文件先调入main方法进入栈内存 2.Student s1(定义一个Student类型的引用型变量在栈内存的main中),new Student(在堆内存中开辟一个空间,并把类里的成员变量初始值,成员方法引用地址传进new里去。最后把new所在堆内存中的地址由栈内存指向main里的s1引用变量里面(或把地址存进s1)),即在哪个方法里new的对象,就把引用对象变量存到哪个方法所在栈区 3.通过main里的s1提供的地址找到结构变量里的name,hobby,sex成员变量,并对其进行赋值。 4.开辟一个新的空间s2并把s1里存的地址分享给s2 5.改刚才s1赋值的hobby更新为爱提问 4.依次输出最新的name,sex,hobby 5.从s2变量读地址进入堆内存中所指的地址,根据里面提供的成员方法地址进入方法区对应的地址执行study方法,即调入study方法入栈内存。 6.因为是s1的,因此以s1对应指向堆内存里成员变量,执行输出语句 7.s2的同样,特别注意的是s2在堆内存里new出的是一个新的内存区域

图片来自黑马java基础课

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值