以下是 Java 基础知识超详细总结(2025–2026 视角),内容覆盖从零基础到面试/日常开发最常使用的核心知识点。结构按逻辑顺序组织,包含代码示例、对比表格、常见陷阱和面试高频点,适合新手系统学习 + 老鸟快速复习。
重点模块:语法 → 数据类型 → 面向对象 → 异常 → 集合 → 常用类 → 关键字/修饰符 → Java 8+ 新特性 → 其他高频基础。
1. Java 概述与特性(面试常问开场)
| 特性 | 说明 | 2026 年实际意义 |
|---|---|---|
| 一次编写,到处运行 | 字节码 + JVM 解释执行 | 跨平台仍是最大卖点(云原生、容器化) |
| 面向对象 | 封装、继承、多态 | 核心设计思想 |
| 健壮性 | 自动垃圾回收、无指针、异常处理 | 生产环境崩溃率低 |
| 多线程支持 | Thread / Runnable / Executor | 虚拟线程(Java 21+)极大降低门槛 |
| 安全性 | 类加载器 + 字节码校验 + SecurityManager | 企业级首选 |
| 生态丰富 | Spring 全家桶、Netty、Dubbo、Kafka 等 | 后端霸主地位稳固 |
2026 年新增共识:Java 不再“老旧”,虚拟线程 + 结构化并发 + 记录类 + 模式匹配 + 密封类让它在并发、API 设计上非常现代。
2. 基本数据类型 & 包装类(自动装箱/拆箱高频)
| 类型 | 字节 | 默认值 | 包装类 | 缓存范围(Integer) | 面试坑点 |
|---|---|---|---|---|---|
| byte | 1 | 0 | Byte | — | — |
| short | 2 | 0 | Short | — | — |
| int | 4 | 0 | Integer | -128 ~ 127 | == vs equals、缓存导致诡异结果 |
| long | 8 | 0L | Long | — | 字面量要加 L |
| float | 4 | 0.0f | Float | — | 精度丢失严重 |
| double | 8 | 0.0 | Double | — | BigDecimal 替代浮点运算 |
| char | 2 | ” | Character | — | Unicode |
| boolean | ~1 | false | Boolean | — | new Boolean(“true”) 陷阱 |
自动装箱/拆箱示例 + 坑:
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 e = new Integer(100); // 显式 new,不走缓存
System.out.println(a == e); // false
建议:数值比较统一用 equals() 或 compareTo(),避免 == 踩坑。
3. 面向对象三大特性(必考)
3.1 封装
- private 修饰字段 + public getter/setter
- 好处:隐藏实现、控制访问、便于维护
3.2 继承
- extends(单继承)
- super() 调用父类构造、super. 调用父类成员
- 方法重写(@Override)规则:同名、同参、返回值兼容、访问权限不严格、异常不扩大
3.3 多态
- 编译看左(父/接口类型),运行看右(实际对象)
- 两种形式:
- 方法重载(Overload)—— 编译时多态
- 方法重写(Override)—— 运行时多态
多态经典代码:
Animal animal = new Dog(); // 向上转型
animal.eat(); // 调用 Dog 的 eat() → 运行时多态
4. final、static、this、super(高频关键字)
| 关键字 | 修饰对象 | 含义 | 常见考点 |
|---|---|---|---|
| final | 类 | 不能被继承 | String 为什么是 final |
| 方法 | 不能被重写 | — | |
| 变量 | 常量(基本类型值不可变,引用地址不变) | final 局部变量、final 成员变量初始化 | |
| static | 成员变量 | 类变量,所有对象共享 | static 代码块执行时机 |
| 方法 | 类方法,不能访问 this/super、非静态成员 | static 工具类设计 | |
| this | — | 当前对象引用 | this() 调用本类构造、区分同名变量 |
| super | — | 父类对象引用 | super() 调用父类构造、super. 调用父成员 |
5. 异常处理(try-catch-finally & throws)
结构:
try {
// 可能抛异常代码
} catch (IOException | SQLException e) { // Java 7+ 多 catch
// 处理
} catch (Exception e) {
// 兜底
} finally {
// 必定执行(释放资源)
}
throw vs throws:
- throw:手动抛出异常(方法内部)
- throws:声明方法可能抛出的异常(方法签名)
常见异常分类:
- Error:严重问题(如 OutOfMemoryError)
- Exception
- RuntimeException(非检查):NullPointerException、ArrayIndexOutOfBoundsException
- Checked Exception:IOException、SQLException(必须处理)
6. 集合框架(Collection & Map)—— 面试重灾区
整体架构(2026 仍未变):
- Collection
- List(有序、可重复)
- ArrayList(数组,查询快)
- LinkedList(双向链表,增删快)
- Vector(线程安全,基本淘汰)
- Set(无序、不可重复)
- HashSet(哈希表)
- LinkedHashSet(插入顺序)
- TreeSet(红黑树,排序)
- Queue
- PriorityQueue(堆)
- ArrayDeque(双端队列)
- Map(键值对)
- HashMap(数组+链表+红黑树)
- LinkedHashMap(插入/访问顺序)
- TreeMap(红黑树,键排序)
- ConcurrentHashMap(高并发首选)
HashMap 1.8 核心变化:
- 链表长度 > 8 且数组长度 ≥ 64 → 转红黑树
- 扩容时重新 hash(高位参与)
ConcurrentHashMap 1.8:放弃 Segment,分段锁 → CAS + synchronized(锁链表/树头)
7. 常用类(String / StringBuilder / 包装类)
- String:不可变(final char[])、常量池机制
- StringBuilder:可变、单线程高性能
- StringBuffer:可变、线程安全(synchronized)
BigDecimal(金钱计算必用):
BigDecimal a = new BigDecimal("0.1");
BigDecimal b = new BigDecimal("0.2");
System.out.println(a.add(b)); // 0.3 而不是 0.30000000000000004
8. Java 8+ 核心新特性(面试必问)
- Lambda 表达式 + 函数式接口(@FunctionalInterface)
- Stream API(filter/map/reduce/collect)
- Optional(防 NPE)
- 默认方法 & 静态方法(接口)
- 方法引用(::)
- 新日期时间 API(LocalDate / LocalDateTime / Duration)
- 记录类(record,Java 16+)—— 不可变数据载体
- 密封类(sealed,Java 17+)
Stream 经典示例:
List<String> list = Arrays.asList("apple", "banana", "cherry");
list.stream()
.filter(s -> s.length() > 5)
.map(String::toUpperCase)
.forEach(System.out::println);
9. 其他高频基础知识点
- 接口 vs 抽象类:接口(多实现)、抽象类(单继承 + 状态)
- 泛型:擦除机制、上界/下界通配符(? extends / ? super)
- 反射:Class.forName、getMethod、invoke(Spring IOC 基础)
- 枚举:enum + values() + valueOf()
- 注解:@Override / @Deprecated / 元注解(@Target/@Retention)
- 内部类:成员内部类、静态内部类、局部内部类、匿名内部类
一句话总结:
Java 基础 = 语法糖 + 面向对象思想 + 内存模型理解 + 集合/并发底层 + 异常安全意识。
这份总结覆盖了 90%+ 的 Java 基础面试范围(校招/社招/实习)。
如果你想针对某个模块(比如集合底层源码、JVM 内存结构、Java 8 Stream 原理)要更详细的展开、代码示例或面试追问链路,直接告诉我,我可以继续深挖。祝学习顺利,Offer 多多!