Java学习笔记 -- 面向对象原理篇

1 面向对象的内存管理

1.1 内存组成及分配

栈内存:方法被调用进栈执行,执行完毕出栈(方法)

堆内存:所有线程共享,存储对象、数组、字符串常量池(new关键字)

方法区:字节码信息

1.2 内存分配流程

1.2.1 创建对象的七步

1.2.2 对象执行流程

注:栈内存的方法和堆内存的常量池执行完毕后都会清空

1.2.3 总结

1.3 练习

1.3.1 内存分配小练习

关键点:调用change方法,把stu对象的内存地址给了方法,方法会根据地址找到对象,对数据进行修改,其他变量再次访问会是修改后的结果2.

1.3.2 练习总结

2 this关键字真正的原理

2.1 this关键字详解

this:区别局部变量和成员变量

内存:所在方法调用者的地址值

2.2 练习

输出结果:10 18 10 19

例如:当s2.study调用时,study方法进栈执行,对象s2调用获取到了s2的内存地址,方法执行,先输出局部变量age(就近原则),然后执行this.age,this会获取成员变量,通过对象s2内存地址获得成员变量age的数据打印,方法执行完毕出栈。

总结

this的本质:代表所在方法调用者的内存地址

相关推荐
猿究院_夏燊6 小时前
Spring Bean 生命周期
java·后端·spring
Wang's Blog7 小时前
Java 项目实战: 交友项目:登录链路回顾与今日任务地图
java·开发语言·状态模式·交友
信誓旦旦的程序猿7 小时前
【Python量化实战宝典 #08】可转债与债券接口手册:转股价·溢价率·纯债价值(Python 可跑)
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
砚底藏山河7 小时前
python量化:行情数据回溯
java·开发语言·python·金融·maven
Jlzn88887 小时前
华东电芯分选通道数怎么配才不堵线
java·人工智能·架构·自动化·制造
香吧香8 小时前
GRPC连接机制---长连接分析
java·网络与传输协议
我是人✓8 小时前
SpringBoot项目的五种创建方式
java·spring boot·后端
Wang's Blog8 小时前
Java 项目实战: 交友项目 - 阿里云 OSS 入门案例:从创建 Bucket 到上传拿到可访问 URL
java·阿里云·交友
优选资源分享9 小时前
PicGo v3.0.3 新版 | 开源免费图床工具
javascript·笔记·electron
裕晟资质规划9 小时前
三类涉密资质延续时限差异分析:军工60日与集成印制3个月的边界
java·服务器·前端·网络·安全