文章

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、实现 RunnableCallable(有返回值)+ Future
  • synchronized:对象锁,可修饰方法/代码块;ReentrantLock 更灵活(可中断、公平锁、条件变量)。
  • volatile:保证可见性 + 禁止指令重排,但不保证原子性。
  • 线程池ThreadPoolExecutor 七大参数(核心/最大线程数、存活时间、队列、拒绝策略)。

五、JVM 内存模型(速记)

  • :对象实例,分新生代(Eden + 两个 Survivor)和老年代。
  • 方法区 / 元空间:类信息、常量、静态变量。
  • 虚拟机栈:栈帧(局部变量表、操作数栈),线程私有。
  • GC 算法:标记-清除、复制(新生代)、标记-整理(老年代)。

本文为暂存笔记,后续补充反射、泛型、Stream 流与常见面试题。