🎉 44篇通关!Java基础篇终极总结:一张图、三张表,把全部知识点装进脑子(2026版)
📌 系列导航:《Java 100 天进阶之路》完整目录
⬅️ 上一篇:第44篇:jd-gui反编译class文件,解决中文乱码问题
恭喜你! 你已经完成了《Java 100 天进阶之路》基础篇全部 44 篇的学习。从“Hello World”到 JVM 字节码,从面向对象到 NIO,从注解反射到反编译,你打下了扎实的 Java 根基。
本文是基础篇的最终总结,帮你把 44 篇精华浓缩成一张学习路线图 + 三张速查表 + 一份避坑清单 + 面试题库。建议收藏,随时复习。
📌 基础篇学习路线图

👉 还没学完?点击回到完整目录继续学习
📚 各阶段核心知识点速查表
由于篇幅,此处只展示部分精华。完整44篇详细速查请见基础篇完整目录。
| 阶段 | 篇号 | 核心标题 | 一句话考点 | 面试频率 |
|---|---|---|---|---|
| 一 | 1 | Java跨平台性 | 字节码+JVM实现跨平台 | ⭐⭐⭐⭐⭐ |
| 一 | 2-3 | 环境变量 | JAVA_HOME与Path | ⭐⭐⭐⭐ |
| 一 | 4 | 数组拷贝 | System.arraycopy vs Arrays.copyOf | ⭐⭐⭐ |
| 二 | 5 | 装箱拆箱 | Integer缓存池-128~127 | ⭐⭐⭐⭐⭐ |
| 二 | 6 | 异常分类 | 检查型 vs 运行时 vs Error | ⭐⭐⭐⭐⭐ |
| 二 | 7 | OOP三大特征 | 封装、继承、多态 | ⭐⭐⭐⭐⭐ |
| 二 | 12 | 抽象类与构造器 | 抽象类为什么可以有构造方法? | ⭐⭐⭐⭐ |
| 二 | 13 | JDK/JRE/JVM | 包含关系、堆栈内存 | ⭐⭐⭐⭐⭐ |
| 二 | 14 | final关键字 | String为什么是final? | ⭐⭐⭐⭐⭐ |
| 二 | 16 | Lombok陷阱 | 继承场景下的equals错误 | ⭐⭐⭐⭐ |
| 二 | 18-19 | 接口 vs 抽象类 | 5点区别,default方法 | ⭐⭐⭐⭐⭐ |
| 三 | 22 | String | 不可变性、常量池、StringBuilder | ⭐⭐⭐⭐⭐ |
| 三 | 24 | 枚举 | 枚举单例、values() | ⭐⭐⭐⭐ |
| 三 | 25 | 类加载 | 双亲委派模型 | ⭐⭐⭐⭐⭐ |
| 四 | 26 | 注解 | @Retention策略、元注解 | ⭐⭐⭐⭐ |
| 四 | 27 | 代理 | JDK动态代理 vs CGLIB | ⭐⭐⭐⭐⭐ |
| 四 | 28 | 反射 | 获取Class、访问私有 | ⭐⭐⭐⭐⭐ |
| 四 | 29-30 | 日期 | LocalDate替代Date | ⭐⭐⭐⭐ |
| 四 | 31 | 数组 | 内存结构、Arrays工具类 | ⭐⭐⭐ |
| 五 | 32 | 工具类 | Objects.equals、Collections.unmodifiableXxx | ⭐⭐⭐⭐ |
| 五 | 33 | static | 静态变量存储位置(方法区) | ⭐⭐⭐⭐⭐ |
| 五 | 34 | 序列化 | serialVersionUID、transient | ⭐⭐⭐⭐ |
| 五 | 35 | 异常最佳实践 | try-with-resources、不吞异常 | ⭐⭐⭐⭐⭐ |
| 六 | 36 | NIO | BIO/NIO/AIO区别、Selector | ⭐⭐⭐⭐ |
| 六 | 37 | 内部类 | 四种内部类、内存泄漏 | ⭐⭐⭐ |
| 六 | 38 | 动态语言 | Java静态 + 半动态特性 | ⭐⭐⭐ |
| 六 | 39 | 泛型 | 类型擦除、PECS原则 | ⭐⭐⭐⭐⭐ |
| 六 | 40 | 浮点数 | 0.1+0.2!=0.3、BigDecimal | ⭐⭐⭐⭐ |
| 六 | 41 | GET/POST、堆栈 | HTTP方法、JVM内存模型 | ⭐⭐⭐⭐⭐ |
| 六 | 42 | GC与JIT | 复制/标记清除/标记整理、即时编译 | ⭐⭐⭐⭐⭐ |
| 六 | 43 | 字节码 | javap -c/-v、语法糖 | ⭐⭐⭐⭐ |
| 六 | 44 | 反编译 | jd-gui、CFR、乱码解决 | ⭐⭐⭐ |
🔥 高频面试题精选(附速记口诀)
以下30道题是基础篇44篇中最常被问到的,加粗为记忆核心,每类附“速记法”。
📌 基础语法与环境(3题)⭐️⭐️⭐️⭐️⭐️
-
Java跨平台原理?
→ 源码 → 字节码 → JVM → 机器码,JVM屏蔽系统差异。
💡 口诀:源码变字节,JVM做翻译 -
Path环境变量作用?
→ 系统按顺序搜索可执行文件目录。
💡 口诀:系统找命令,Path里挨个翻 -
数组拷贝两种方式区别?
→System.arraycopy:预分配目标数组;Arrays.copyOf:自动创建新数组。
💡 口诀:手动预分配,自动copyOf
📌 面向对象(10题)⭐️⭐️⭐️⭐️⭐️
-
封装、继承、多态含义?
→ 封装:隐藏实现;继承:复用代码;多态:父类引用子类对象。
💡 口诀:藏实现、复代码、父指子 -
抽象类 vs 接口(5点)?
→ 构造方法、成员变量、多继承、访问修饰符、设计理念。
💡 口诀:构、变、继、修、理 -
final修饰类/方法/变量?
→ 类:不可继承;方法:不可重写;变量:引用地址不可变(内容可变)。
💡 口诀:类断子,法绝嗣,变量锁地址 -
static变量存储在哪?
→ 方法区(JDK8+元空间)。
💡 口诀:静态存储元空间 -
构造方法能否被重写?
→ 不能重写,但可重载。
💡 口诀:构造不重写,参数定重载 -
父子类初始化顺序?
→ 父静→子静→父实例→父构造→子实例→子构造。
💡 口诀:父静子静,父实父构,子实子构 -
==和equals区别?
→==:基本类型值 / 引用地址;equals:可重写比较内容。
💡 口诀:==比地址,equals比内容 -
String为什么不可变?
→ 常量池安全、线程安全、hashCode可缓存。
💡 口诀:池安、线安、哈希缓 -
StringBuildervsStringBuffer?
→StringBuilder:线程不安全(快);StringBuffer:同步(慢)。
💡 口诀:不安全快,同步慢 -
Integer缓存池范围?
→ -128 ~ 127。
💡 口诀:负一二八到正一二七
📌 异常、包装类、枚举(4题)⭐️⭐️⭐️⭐️
-
检查型 vs 运行时异常?
→ 检查型:必须处理(IO);运行时:可改代码(空指针)。
💡 口诀:检查必抓,运行时改码 -
try-catch-finally中return顺序?
→finally块在return前执行。
💡 口诀:先finally后return -
枚举单例优点?
→ JVM保证唯一、线程安全、防反射攻击。
💡 口诀:JVM唯一,线安反 -
serialVersionUID作用?
→ 序列化版本兼容,避免反序列化失败。
💡 口诀:版本一致,反序不崩
📌 注解、反射、代理(4题)⭐️⭐️⭐️⭐️⭐️
-
@Retention三种策略?
→ SOURCE(源码)、CLASS(字节码)、RUNTIME(运行时反射)。
💡 口诀:源码字节运行存 -
反射优缺点?
→ 优:动态性、框架基础;缺:性能略低、破坏封装。
💡 口诀:动框好,性封差 -
JDK动态代理 vs CGLIB?
→ JDK:基于接口;CGLIB:基于继承(不能代理final类)。
💡 口诀:JDK接口,CGLIB继承 -
动态代理应用场景?
→ Spring AOP、日志、事务、权限。
💡 口诀:AOP日志事权
📌 JVM与内存(5题)⭐️⭐️⭐️⭐️⭐️
-
堆和栈存储内容?
→ 栈:局部变量、引用;堆:对象实例、数组。
💡 口诀:栈局引,堆实例 -
栈溢出 vs 堆溢出?
→ 栈溢出:递归太深;堆溢出:new太多对象不释放。
💡 口诀:栈深递归,堆多不散 -
GC算法有哪些?
→ 复制(年轻代)、标记-清除、标记-整理(老年代)。
💡 口诀:年复制,老标清整 -
JIT编译器作用?
→ 热点代码编译成本地机器码,提升性能。
💡 口诀:热点编本,性能升 -
类加载双亲委派模型?
→ 父类优先加载,避免核心类被篡改。
💡 口诀:父先加载,核心平安
📌 NIO、泛型、网络(4题)⭐️⭐️⭐️⭐️
-
BIO/NIO/AIO区别?
→ BIO:阻塞一连接一线程;NIO:同步非阻塞(Selector);AIO:异步回调。
💡 口诀:BIO一线,NIO选择,AIO回调 -
PECS原则?
→ Producer Extends, Consumer Super。
💡 口诀:取用extends,存用super -
GET vs POST本质区别?
→ GET:幂等、参数URL;POST:非幂等、参数body。
💡 口诀:GET幂等URL,POST非幂body -
0.1+0.2!=0.3原因?
→ 二进制无法精确表示0.1。
💡 口诀:二进制无限,BigDecimal解
📝 一句话速记表
| 分类 | 速记关键词 |
|---|---|
| 跨平台 | 源码→字节码→JVM→机器码 |
| 环境变量 | Path里挨个翻 |
| 面向对象 | 藏实现、复代码、父指子 |
| final | 类断子,法绝嗣,变量锁地址 |
| 初始化 | 父静子静,父实父构,子实子构 |
| 异常 | 检查必抓,运行时改码 |
| 枚举单例 | JVM唯一,线安反 |
| 反射 | 动框好,性封差 |
| 代理 | JDK接口,CGLIB继承 |
| GC | 年复制,老标清整 |
| 双亲委派 | 父先加载,核心平安 |
| PECS | 取用extends,存用super |
| GET/POST | GET幂等URL,POST非幂body |
| 浮点数 | 二进制无限,BigDecimal解 |
🧨 避坑清单(44篇血泪教训汇总)
| 坑点 | 错误写法 | 正确做法 |
|---|---|---|
| 环境变量 | 修改后不重启终端 | 重新打开命令行窗口 |
| 数组拷贝 | int[] b = a; | Arrays.copyOf(a, a.length) |
| 包装类比较 | Integer a=128; Integer b=128; a==b | a.equals(b) |
| Lombok继承 | @Data子类未设callSuper=true | @EqualsAndHashCode(callSuper=true) |
| 字符串拼接 | 循环中用+ | 用StringBuilder |
| final引用 | 以为final List不能改元素 | 元素可改,引用不可变 |
| 抽象类 | 子类未实现所有抽象方法 | 要么实现,要么子类也是抽象类 |
| 构造方法 | 写了有参构造,忘了无参构造 | 显式写无参构造 |
| 序列化 | 没有serialVersionUID | 显式定义 private static final long serialVersionUID = 1L; |
| 泛型通配符 | ? extends T试图添加元素 | 只能读,不能写(除null) |
| 浮点数比较 | double a == double b | 用BigDecimal或误差阈值 |
| GET请求 | 携带敏感信息 | 使用POST+HTTPS |
| 递归 | 无终止条件 | 控制深度或改为迭代 |
| 反射 | 频繁调用反射方法 | 缓存Method对象 |
💻 核心知识点代码速查
以下代码演示了基础篇中最核心的6个知识点/陷阱,可直接复制到 IDE 运行观察结果,加深理解。
第5篇:Integer 缓存池陷阱
public class IntegerCacheDemo {
public static void main(String[] args) {
Integer a = 127, b = 127;
Integer c = 128, d = 128;
System.out.println(a == b); // true(缓存范围内)
System.out.println(c == d); // false(缓存范围外)
System.out.println(c.equals(d)); // true(正确比较)
}
}
第4篇:数组拷贝浅拷贝 vs 深拷贝
import java.util.Arrays;
public class ArrayCopyDemo {
static class Person { String name; Person(String n) { name = n; } }
public static void main(String[] args) {
Person[] original = {new Person("张三"), new Person("李四")};
Person[] shallow = Arrays.copyOf(original, original.length);
shallow[0].name = "王五";
System.out.println(original[0].name); // 王五(浅拷贝影响原数组)
}
}
第7篇:多态与动态绑定
class Animal { void shout() { System.out.println("动物叫"); } }
class Dog extends Animal { void shout() { System.out.println("汪汪"); } }
public class PolymorphismDemo {
public static void main(String[] args) {
Animal a = new Dog();
a.shout(); // 输出"汪汪"(运行时多态)
}
}
第6篇:try-catch-finally 执行顺序
public class FinallyDemo {
static int test() {
try { return 1; }
finally { System.out.println("finally 执行了"); }
}
public static void main(String[] args) {
System.out.println(test()); // 先输出"finally 执行了",再输出1
}
}
第22篇:String 不可变与 StringBuilder
public class StringDemo {
public static void main(String[] args) {
String s = "hello";
s.toUpperCase(); // 不会改变原字符串
System.out.println(s); // hello
StringBuilder sb = new StringBuilder("hello");
sb.append(" world");
System.out.println(sb); // hello world(可变的)
}
}
第24篇:枚举单例
enum Singleton {
INSTANCE;
public void doSomething() { System.out.println("枚举单例"); }
}
public class EnumSingletonDemo {
public static void main(String[] args) {
Singleton.INSTANCE.doSomething();
}
}
📌想进一步了解Java设计模式中的单例模式,可以阅读《Java 23 种设计模式:从踩坑到精通 | 单例模式》文章,该文章用 12 种 实现方式——从饿汉式到枚举,从 DCL 到 CAS,附反射/序列化/克隆攻击防御测试。结合 Spring、JDK 及 AI 时代新场景,帮你彻底掌握单例的正确选型与安全防御。读完本文,你将拥有一份可以应对面试与生产环境的单例“兵器谱”。
第13篇:静态变量与实例变量
class Counter {
static int staticCount = 0;
int instanceCount = 0;
Counter() { staticCount++; instanceCount++; }
}
public class StaticDemo {
public static void main(String[] args) {
new Counter(); new Counter();
System.out.println(Counter.staticCount); // 2(共享)
System.out.println(new Counter().instanceCount); // 1(独立)
}
}
第45篇:ArrayList 的 foreach 删除错误
import java.util.*;
public class FailFastDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<>(Arrays.asList("a","b","c"));
for (String s : list) {
if (s.equals("b")) list.remove(s); // 抛出 ConcurrentModificationException
}
}
}
🚀 进阶篇预告
基础篇已为你铺好坚实的道路。进阶篇将带你进入真正的 “大厂” 面试与实战:
- ✅ 集合框架源码(HashMap、ConcurrentHashMap、ArrayList源码)
- ✅ 多线程与高并发(AQS、线程池、锁升级、volatile、ThreadLocal)
- ✅ JVM调优(GC日志分析、内存泄漏排查、Arthas)
- ✅ Spring全家桶(IoC、AOP、事务、Spring Boot自动配置)
- ✅ 微服务与中间件(Nacos、Gateway、Feign、分布式事务)
- ✅ 数据库与缓存(MySQL索引优化、Redis高级、SQL调优)
- ✅ 面试冲刺(设计秒杀系统、手写Spring、算法与设计模式、200题精讲)
进阶篇将继续保持“通俗讲解 + 代码案例 + 避坑表 + 面试题”的风格。
👉 订阅专栏,第一时间收到进阶篇更新!
🎁 福利:基础篇全套知识点PDF
为了方便你随时复习,我把44篇的核心知识点、面试题、避坑表整理成了一份 PDF速查手册。
获取方式:
- 关注我的CSDN账号(点击关注)
- 在本文评论区留言 “Java基础通关” 或 私信我或留下邮箱地址
- 我会抽时间将PDF下载链接发送给你。
🚀 接下来:进阶篇(第45~108篇)—— 从原理到架构,从源码到实战
基础篇已为你铺好坚实的Java地基。但要想在面试中脱颖而出、在工作中独当一面,还需要进阶篇的64篇深度内容。以下是完整的学习路线:
📌 进阶篇学什么?(分阶段预览)
| 阶段 | 篇号 | 核心内容 | 面试权重 |
|---|---|---|---|
| 集合源码 | 45-50 | ArrayList、LinkedList、HashMap、ConcurrentHashMap、阻塞队列源码 | ⭐⭐⭐⭐⭐ |
| 并发编程 | 51-60 | 线程池、AQS、锁升级、CompletableFuture、ThreadLocal | ⭐⭐⭐⭐⭐ |
| JVM调优 | 61-67 | 内存模型、GC算法、JIT、OOM排查、Arthas实战 | ⭐⭐⭐⭐⭐ |
| JavaWeb | 68-72 | Servlet、Session、HTTP协议、Web高频面试题 | ⭐⭐⭐⭐ |
| Spring全家桶 | 73-82 | IoC、AOP、事务、Spring Boot自动配置、循环依赖 | ⭐⭐⭐⭐⭐ |
| 数据库与MyBatis | 83-90 | MySQL索引/事务、SQL优化、MyBatis源码、连接池 | ⭐⭐⭐⭐⭐ |
| 缓存与MQ | 91-96 | Redis核心、持久化、缓存三大坑、消息队列 | ⭐⭐⭐⭐⭐ |
| 微服务 | 97-100 | Nacos、Gateway、OpenFeign、分布式事务 | ⭐⭐⭐⭐ |
| 数据库扩展+物联网 | 101-103 | PostgreSQL、国产数据库(TiDB等)、Netty+MQTT | ⭐⭐⭐ |
| AI编程 | 104-106 | Spring AI调用大模型、Trae实战、AI辅助开发 | ⭐⭐⭐⭐ |
| 设计模式+面试压轴 | 107-108 | 工厂/策略/代理模式、20道大厂难题 | ⭐⭐⭐⭐⭐ |
💡 进阶篇将继续保持“通俗讲解 + 代码案例 + 避坑表 + 面试题”的风格,每篇都是独立的深度专题。
🎯 进阶篇的三大核心价值
- 补全面试高频考点:HashMap原理、线程池参数、JVM调优、Redis缓存穿透…… 全是必考。
- 从“会用”到“懂源码”:不只会用
ArrayList,还能说出扩容机制;不只会写@Transactional,还能分析失效场景。 - 拓宽技术视野:涵盖PostgreSQL、物联网、AI编程等前沿方向,提升简历含金量。
📖 完整进阶篇目录
👉 点击查看《Java 100 天进阶之路 · 进阶篇完整目录(第45~108篇)》(已规划,持续更新)
🔔 如何第一时间收到进阶篇更新?
📌 下一步行动
- 收藏本文,随时回看知识点速查表和面试题。
- 订阅专栏,确保进阶篇更新时你第一时间收到。
- 转发给正在学Java的朋友,帮他们也少走弯路。
种一棵树最好的时间是10年前,其次是现在。
基础篇已经种下,进阶篇的森林等你来探索。
📌 本总结文章属于《Java 100 天进阶之路 | 从入门到上岗就业》系列。
基础篇44篇已完结,进阶篇64篇即将启航。感谢一路同行,我们进阶篇见!
📌 除了《Java 100 天进阶之路 | 从入门到上岗就业》、《Java 23 种设计模式:从踩坑到精通》系列文章,我也在深挖智能物流实战(出版社WMS、托盘调度、机器学习落地)。如果你对技术在不同领域的实战感兴趣,欢迎点击我的头像,看看专栏《出版社物流WMS智能调度实战》。技术相通,思路可鉴。
&spm=1001.2101.3001.5002&articleId=161557395&d=1&t=3&u=9731322c0c0e4c55ba0e0d1f84667529)
3万+

被折叠的 条评论
为什么被折叠?



