下面是一份2026年视角下仍然非常实用的 Java SE 基础知识超详细总结(面向初学者到中级开发者),内容按逻辑顺序组织,重点突出常考、易错、高频使用的部分。
我会尽量用简洁 + 对比 + 记忆点 + 代码示例的方式呈现,便于快速复习和理解。
一、Java语言基础与环境
| 概念 | 全称 | 主要作用 | 包含内容/备注 |
|---|---|---|---|
| JDK | Java Development Kit | 开发 + 运行 | 包含JRE + 编译器javac + 工具(javadoc、jar等) |
| JRE | Java Runtime Environment | 只运行 | 包含JVM + 核心类库 |
| JVM | Java Virtual Machine | 真正执行字节码的地方 | HotSpot(主流)、J9、GraalVM 等实现 |
Java跨平台原理一句话总结:
程序员写 .java → javac 编译成平台无关的 .class(字节码) → 不同平台的JVM把字节码解释/JIT编译成对应机器码执行。
2025–2026主流版本:
企业主流:Java 8 / 11 / 17 / 21(LTS)
最推荐学习路径(2026):先精通 17/21 的新特性,再向下兼容 8 和 11。
二、基本数据类型与包装类(8种)
| 类型 | 字节 | 默认值 | 包装类 | 缓存范围(==) | 常考点 |
|---|---|---|---|---|---|
| byte | 1 | 0 | Byte | -128 ~ 127 | |
| short | 2 | 0 | Short | -128 ~ 127 | |
| int | 4 | 0 | Integer | -128 ~ 127 | valueOf() 有缓存,new 没有 |
| long | 8 | 0L | Long | -128 ~ 127 | 后缀 L/l |
| float | 4 | 0.0f | Float | 无 | 后缀 F/f,精度丢失严重 |
| double | 8 | 0.0 | Double | 无 | 默认浮点类型 |
| char | 2 | Character | 0 ~ 127(ASCII) | 可存中文(Unicode) | |
| boolean | ~ | false | Boolean | true/false(不是对象) | 不能用 1/0 赋值 |
经典面试题示例:
Integer a = 100; // 自动装箱 → Integer.valueOf(100) → 缓存
Integer b = 100;
System.out.println(a == b); // true
Integer c = 200;
Integer d = 200;
System.out.println(c == d); // false (超过缓存范围)
Integer e = new Integer(100);
System.out.println(a == e); // false (一个是缓存对象,一个是new出来的新对象)
三、运算符优先级(高到低,常见记忆口诀)
()[].!~++--(前置>后置)*/%+-<<>>>>><<=>>=instanceof==!=&^|&&||? :=+=-=等赋值
四、面向对象三大特性 + 三大修饰符对比
| 特性/关键字 | private | default | protected | public | 记忆口诀 |
|---|---|---|---|---|---|
| 本类 | √ | √ | √ | √ | — |
| 同包 | × | √ | √ | √ | “default是包访问” |
| 子类 | × | × | √(不同包也行) | √ | “protected护子类” |
| 其他包 | × | × | × | √ | “public全世界” |
三大特性对比表(常考)
| 特性 | 核心思想 | 实现方式 | 面试最常问点 |
|---|---|---|---|
| 封装 | 隐藏实现细节 | private + getter/setter | 为什么要有setter?(控制、校验、日志等) |
| 继承 | 代码复用 | extends(单继承) | 构造器不继承、final类不能被继承 |
| 多态 | 同一接口不同实现 | 方法重写 + 父类引用子对象 | 向上转型、向下转型(instanceof + 强转) |
五、常用关键字对比(超高频)
| 关键字 | 作用范围 | 是否可修饰类 | 是否可修饰方法 | 是否可修饰变量 | 常考对比 |
|---|---|---|---|---|---|
| final | 不可变 | √(不能继承) | √(不能重写) | √(常量) | final、finally、finalize区别 |
| static | 类级别 | × | √(静态方法) | √(静态变量) | 静态代码块 > 构造块 > 构造方法 |
| abstract | 强制子类实现 | √(抽象类) | √(抽象方法) | × | 抽象类 vs 接口(Java 8后区别缩小) |
| interface | 规范(多实现) | √ | √(默认public) | √(public static final) | Java 8+ default/static方法 |
六、String / StringBuilder / StringBuffer(最常考)
| 类 | 是否可变 | 线程安全 | 性能 | 底层实现 | 使用场景 |
|---|---|---|---|---|---|
| String | 不可变 | 安全 | — | final char[] | 常量、key、配置文件 |
| StringBuilder | 可变 | 不安全 | 最快 | char[] + count | 单线程大量拼接 |
| StringBuffer | 可变 | 安全 | 较慢 | char[] + count | 多线程环境下的字符串拼接(少用) |
经典写法对比(性能差距巨大)
// 差:创建了大量临时String对象
String s = "";
for (int i = 0; i < 10000; i++) {
s += i; // 每次都new String
}
// 推荐:Java 5+ 几乎都用 StringBuilder
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10000; i++) {
sb.append(i);
}
String result = sb.toString();
七、集合框架对比(2026年仍最核心)
List(有序、可重复)
| 实现类 | 底层结构 | 随机访问 | 插入/删除效率 | 线程安全 | 适用场景 |
|---|---|---|---|---|---|
| ArrayList | 动态数组 | 快 O(1) | 慢 O(n) | 否 | 查询多、尾插多 |
| LinkedList | 双向链表 | 慢 O(n) | 快 O(1) | 否 | 频繁头尾增删 |
| Vector | 动态数组 | 快 | 慢 | 是(synchronized) | 古老遗留类(基本不用) |
Set(无序、不可重复)
| 实现类 | 底层 | 是否有序 | 是否允许null | 性能特点 |
|---|---|---|---|---|
| HashSet | HashMap | 无序 | 允许1个null | 最快(O(1)) |
| LinkedHashSet | HashMap+链表 | 插入顺序 | 允许1个null | 略慢于HashSet,但有序 |
| TreeSet | 红黑树 | 自然/自定义排序 | 不允许null | log(n),自带排序 |
Map(键值对)
| 实现类 | 底层 | 是否有序 | key是否可null | value是否可null | 性能特点 |
|---|---|---|---|---|---|
| HashMap | 数组+链表+红黑树 | 无序 | 允许1个null | 允许 | 最常用,O(1) |
| LinkedHashMap | 数组+链表+红黑树+双向链表 | 插入/访问顺序 | 允许1个null | 允许 | 维护插入/访问顺序 |
| TreeMap | 红黑树 | key排序 | 不允许null | 允许 | 自带key排序,log(n) |
| Hashtable | 数组+链表 | 无序 | 不允许null | 不允许null | 古老、synchronized |
八、异常体系(两张图就能记住)
Throwable(顶层)
├── Error(严重错误,程序员一般不处理)
│ └── OutOfMemoryError / StackOverflowError ...
└── Exception(可恢复)
├── RuntimeException(非受检,unchecked)
│ ├── NullPointerException
│ ├── ArrayIndexOutOfBoundsException
│ ├── ClassCastException
│ └── ...
└── 其他(受检,checked,必须处理)
├── IOException
├── SQLException
└── ...
推荐处理风格(2026主流):
// 1. 尽量用具体异常,不要直接catch Exception
try {
// ...
} catch (FileNotFoundException e) {
// 处理文件不存在
} catch (IOException e) {
// 其他IO异常
}
// 2. Java 7+ 多catch写法
} catch (FileNotFoundException | UnknownHostException e) {
// ...
}
希望这份总结对你有帮助!如果想深入某个模块(比如 JVM内存结构、类加载机制、泛型擦除、多线程基础、IO/NIO、反射、枚举、Lambda、Stream 等),可以告诉我,我再给你展开更细的版本。加油~