文章
Java SE 学习笔记:语法与核心机制
沈行知
暂存笔记,持续补充中。Java SE 是后端方向的根基,面试必考。
一、面向对象
- 封装 / 继承 / 多态:多态是运行期绑定,父类引用指向子类对象。
==比较引用地址,equals比较内容(需重写);重写equals必须重写hashCode。- 抽象类 vs 接口:抽象类用
extends(单继承),接口用implements(多实现),接口default方法可有默认实现。
二、集合框架
| 接口 | 实现 | 特点 |
|---|---|---|
| List | ArrayList / LinkedList | 有序可重复,前者数组、后者链表 |
| Set | HashSet / TreeSet | 去重,后者有序 |
| Map | HashMap / TreeMap | 键值对,后者按 key 有序 |
| 并发 | ConcurrentHashMap | 线程安全,分段锁/CAS |
- HashMap:数组 + 链表 + 红黑树(链表 > 8 且数组 ≥ 64 时转红黑树),负载因子 0.75。
- ArrayList 扩容:约 1.5 倍,
HashMap扩容 2 倍。
三、异常
Throwable下分Error(不可处理)和Exception。Exception分受检异常(编译期强制处理)和运行时异常(RuntimeException,可选处理)。try-catch-finally/try-with-resources(自动关闭资源)。
四、并发基础
- 线程创建:继承
Thread、实现Runnable、Callable(有返回值)+Future。 - synchronized:对象锁,可修饰方法/代码块;
ReentrantLock更灵活(可中断、公平锁、条件变量)。 - volatile:保证可见性 + 禁止指令重排,但不保证原子性。
- 线程池:
ThreadPoolExecutor七大参数(核心/最大线程数、存活时间、队列、拒绝策略)。
五、JVM 内存模型(速记)
- 堆:对象实例,分新生代(Eden + 两个 Survivor)和老年代。
- 方法区 / 元空间:类信息、常量、静态变量。
- 虚拟机栈:栈帧(局部变量表、操作数栈),线程私有。
- GC 算法:标记-清除、复制(新生代)、标记-整理(老年代)。
本文为暂存笔记,后续补充反射、泛型、Stream 流与常见面试题。