以下是 Java 基础知识超详细总结(2026 年视角,基于 Java 21 LTS 及主流面试/实际开发需求)。这份整理力求全面、系统、易懂,覆盖从零基础到核心进阶的绝大部分内容。收藏这篇基本就够了(后续进阶如集合、并发、JVM、Spring 等可另开专题)。
内容分为 10 大模块,每模块包含核心概念、代码示例、易错点 & 面试高频考点。
1. Java 概述 & 运行机制(必背)
Java 三大特性(2026 常问):
- 一次编写,到处运行(平台无关性)
- 面向对象
- 健壮性(自动垃圾回收 + 异常处理)
JDK / JRE / JVM 区别(经典面试题):
- JDK = Java 开发工具包(开发 + 运行)
- JRE = Java 运行环境(仅运行)
- JVM = Java 虚拟机(真正执行字节码)
Java 程序执行流程:
源代码(.java) → javac 编译 → 字节码(.class) → 类加载器 → JVM(解释器 + JIT 编译器) → 机器码执行
Java 版本演进速记(面试常考):
- Java 8(2014):Lambda、Stream、Optional、默认方法
- Java 11(2018 LTS):模块化(JPMS)、var 局部变量类型推断
- Java 17(2021 LTS):密封类、记录类(record)、增强 switch
- Java 21(2023 LTS):虚拟线程(Project Loom)、结构化并发、Sequenced Collections
2. 基本数据类型 & 包装类
| 类型 | 字节 | 默认值 | 包装类 | 自动装箱/拆箱陷阱(面试必考) |
|---|---|---|---|---|
| byte | 1 | 0 | Byte | -128 ~ 127 |
| short | 2 | 0 | Short | -32768 ~ 32767 |
| int | 4 | 0 | Integer | 缓存 -128~127 |
| long | 8 | 0L | Long | 加 L |
| float | 4 | 0.0f | Float | 加 f |
| double | 8 | 0.0 | Double | 默认浮点 |
| char | 2 | ” | Character | Unicode 0~65535 |
| boolean | ~1bit | false | Boolean | 不能用 0/1 代替 |
自动装箱/拆箱经典陷阱:
Integer a = 100;
Integer b = 100;
System.out.println(a == b); // true(缓存)
Integer c = 200;
Integer d = 200;
System.out.println(c == d); // false(超出缓存范围,新对象)
面试扩展:为什么 Integer 缓存 -128~127?(性能优化 + 常量池)
3. 运算符 & 优先级(易错点集中营)
优先级口诀(从高到低):
- 后缀(. [] () ++ –) > 前缀(++ — ! ~ new) > 算术 > 移位 > 关系 > 相等 > 位运算 > 逻辑 > 三元 > 赋值
复合赋值隐式转换(经典笔试题):
short s = 1;
s += 1; // 合法,等价 s = (short)(s + 1)
s = s + 1; // 编译错误!int 不能赋给 short
字符串拼接优先级:
System.out.println(1 + 2 + "3"); // "33"
System.out.println("1" + 2 + 3); // "123"
短路 vs 非短路:
- && / || 短路(左边确定就不算右边)
- & / | 不短路(两边都算,可能 NPE)
4. 流程控制(if / switch / 循环)
switch 增强(Java 17+):
String day = "MON";
String type = switch (day) {
case "MON", "TUE", "WED", "THU", "FRI" -> "工作日";
case "SAT", "SUN" -> "周末";
default -> "非法";
};
for-each vs 传统 for:
for-each 底层调用 iterator,不能改集合大小
5. 面向对象核心(OOP)——三大特性 + 五大原则
三大特性:
- 封装:private + getter/setter
- 继承:extends(单继承),super()
- 多态:父类引用指向子类对象,运行时绑定
五大设计原则(SOLID):
- S:单一职责(一个类只干一件事)
- O:开闭原则(对扩展开放,对修改关闭)
- L:里氏替换(子类可替换父类)
- I:接口隔离(不要胖接口)
- D:依赖倒置(面向接口编程)
final 关键字全解:
- 变量:常量
- 方法:不可重写
- 类:不可继承
static 关键字:
- 静态变量/方法:类级别
- 静态代码块:类加载时执行(只一次)
6. 数组 & 常用类(String / StringBuilder / Math / Date)
数组初始化:
int[] arr = new int[5]; // 全 0
int[] arr2 = {1, 2, 3}; // 静态初始化
String 不可变性(面试核心):
String s = "hello";
s = s + " world"; // 实际创建新对象,原 "hello" 不变
String / StringBuilder / StringBuffer 对比:
| 类 | 可变性 | 线程安全 | 适用场景 |
|---|---|---|---|
| String | 不可变 | — | 常量、频繁拼接少 |
| StringBuilder | 可变 | 非安全 | 单线程高频拼接 |
| StringBuffer | 可变 | 安全 | 多线程(现已少用) |
常用 API:
- equals() vs ==(String 重写了 equals)
- intern()(字符串常量池)
7. 异常处理(try-catch-finally-throw-throws)
异常体系:
- Throwable
- Error(严重错误,如 OutOfMemoryError)
- Exception
- RuntimeException(非检查,如 NullPointerException)
- Checked Exception(必须处理,如 IOException)
经典写法(Java 7+ 多 catch / try-with-resources):
try (FileInputStream fis = new FileInputStream("file.txt")) {
// ...
} catch (IOException | SQLException e) {
// ...
} finally {
// 一定执行(释放资源)
}
8. 常用工具类 & 枚举 & 记录类(Java 14+)
枚举(enum):
public enum Season {
SPRING("春"), SUMMER("夏");
private final String name;
Season(String name) { this.name = name; }
}
记录类(record,Java 16+ 稳定):
public record Point(int x, int y) { } // 自动生成 equals、hashCode、toString、getter
9. 泛型(Generics)基础
常用写法:
List<String> list = new ArrayList<>(); // 钻石语法(Java 7+)
泛型擦除:编译后泛型信息丢失(运行时 List 和 List 是同一个类)
通配符:
? extends T:上限(可读不可写)? super T:下限(可写不可读)
10. 反射 & 注解基础(入门级)
反射三要素:
- Class 对象
- Field / Method / Constructor
获取 Class 对象三种方式:
Class<?> clazz1 = Class.forName("java.lang.String");
Class<?> clazz2 = String.class;
Class<?> clazz3 = new String().getClass();
注解入门(Java 5+):
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
String value() default "hello";
}
最后总结:Java 基础学习路径建议(2026 版)
- 环境搭建 + 语法(1 周)
- 面向对象 + 数组/字符串(2 周)
- 集合框架预习 + 异常(1 周)
- 多线程入门 + IO 流(2 周)
- 泛型 + 反射 + 注解(1 周)
- 刷 LeetCode 简单题 + 复习易错点(持续)
一句话背诵口诀(面试速记):
“八基四引,装箱拆箱陷阱多;运算优先短路别算错;OOP 三大五原则记牢,final static 位置要分清;String 不可变,Builder 可变快;异常分 checked 和 runtime,反射注解入门要会写。”
这份总结基本覆盖 90% 的 Java 基础面试和实际开发需求。如果需要针对某个模块(如集合、多线程、JVM)再做超详细展开,或者附上代码练习题,继续告诉我~