掌握类与对象的核心机制比刷题更有效:JVM按“类初始化”(static块)和“实例初始化”(实例块→构造器)两阶段执行;this/super需首行且互斥;private不可重写;重载看同类参数,重写看父子签名;包装类缓存-128~127,比较用equals()。

掌握类与对象的核心机制,比死记硬背题型更有效。关键不在“刷题量”,而在理解 JVM 如何加载类、实例化对象、处理访问控制和方法调用——这些才是笔试题的底层逻辑。
搞清类加载与对象创建的执行顺序
笔试常考静态块、构造块、构造方法的执行先后。它们不是按代码位置排,而是按“类初始化”和“实例初始化”两个阶段严格划分:
- 类首次主动使用时(如 new 实例、调用静态方法),触发类加载 → 执行 static 块(只一次)
- 每次 new 对象时,先执行 实例初始化块,再执行 构造方法
- 父类 static 块 → 子类 static 块 → 父类实例块 → 父类构造器 → 子类实例块 → 子类构造器
遇到输出题,直接按这个链条推,基本不丢分。
吃透 this、super 和访问修饰符的实际行为
很多陷阱题围绕“能不能访问”“调用的是哪个版本”展开:
- this() 和 super() 必须出现在构造方法第一行,且二者不能共存
- private 方法不能被子类继承,所以谈不上重写;子类同名方法只是新定义,与父类无关
- protected 成员可在同一包或不同包的子类中访问,但不能通过父类引用跨包访问(如 Parent p = new Child(); p.protectedMethod() 编译失败)
区分重载(Overload)与重写(Override)的判定条件
这是高频混淆点,核心看“发生位置”和“编译期/运行期”:
- 重载:同一个类里,方法名相同、参数列表不同(类型/个数/顺序),返回值、修饰符无关
- 重写:父子类之间,方法名+参数列表完全相同;子类返回类型 ≤ 父类(协变返回),异常类型 ≤ 父类,访问修饰符 ≥ 父类(如父类 protected,子类可 public,但不能 private)
- 注意:@Override 注解不会让 private 方法变成可重写,加了也编译不过
识别包装类缓存与 ==/equals 的典型坑
看似是“基础题”,实则考对自动装箱和对象缓存的理解:
- Integer a = 127, b = 127; System.out.println(a == b); // true —— 因为 Integer.valueOf() 对 -128~127 范围内复用缓存对象
- Integer c = 128, d = 128; System.out.println(c == d); // false —— 超出缓存范围,新建对象,地址不同
- 只要涉及包装类比较,一律用 equals();== 只用于基本类型或明确确认是同一对象引用时
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











