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

相关推荐
希和20271 小时前
免费AI视频生成工具汇总(国内优先,适合做漫剧、短视频,Obsidian笔记版)
人工智能·笔记·音视频
文丑颜不良啊1 小时前
LeetCode2141~2160题目解析
java·leetcode
LabVIEW开发1 小时前
LabVIEW 连接板:28 个端子怎么排,优先级怎么定
java·算法·labview
天天被压力2 小时前
【A股分钟级高频数据完全手册 #07】北交所历史分钟K线接口:京市Pro版分时批量
java·人工智能·python
天天被压力2 小时前
【A股分钟级高频数据完全手册 #08】股票日、分时数据接口对比:普通分时与Pro版差异实测
java·人工智能·python
蒸蒸yyyyzwd2 小时前
秋招学习笔记 day109
笔记·八股
特立独行的猫A2 小时前
AI 时代,我为什么推荐用 cj-tauri 开发桌面应用
java·后端·python
金銀銅鐵2 小时前
从一个类名到一张类图:用反射自动生成 PlantUML
java·后端·uml
nice_lcj5203 小时前
Java 并发容器入门:ConcurrentHashMap、CopyOnWriteArrayList、阻塞队列
java·面试·并发编程·阻塞队列·concurrenthashmap·copyonwritearraylist
微小的鱼3 小时前
Linux的渲染与显示系统链路
android·java·linux