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的本质:代表所在方法调用者的内存地址

相关推荐
许彰午2 分钟前
27-AuthService登录链路
java·低代码·架构
泡海椒8 分钟前
JQuick-Curl 性能分析:并发场景下的性能表现与调优,第三方接口调用不只要快写也要稳跑
java·开发语言·okhttp
HugoStudio_SWAN27 分钟前
洛谷 B4450 / B3867 / B3923 智慧购物、储蓄与做题——从程序到生活
c++·学习·程序人生·算法·生活
Rain的Java大神之路1 小时前
JavaWeb开发如何解决跨域问题
java·前端·后端·nginx·web安全·面试·运维开发
自动化监测Learner1 小时前
Navicat Premium 17 中文版安装教程(2026最新版)
java·linux·数据库
那个松鼠很眼熟w2 小时前
4.Spring-Ai入门案例
java·人工智能·spring
计算机毕设定制辅导-无忧学长2 小时前
《基于SpringBoot青年公寓出租管理系统的设计与实现》
java·vue.js·spring boot·青年公寓出租管理系统
猎头南楼2 小时前
VLA 模型落地端侧:从架构选型到量化部署的工程实践笔记
笔记·架构·大模型
Capricorn19882 小时前
日志级幻觉排障:GPT-6 Astra 迈入 AGI 时代,知芽 Notebook Skill 如何以引用校验与零命中诚实弃权解决长文失忆
论文阅读·人工智能·笔记·gpt·agi
UIU1142 小时前
scanf与cout的误区:探究其内部的机制
c++·学习·c#·scanf