钩子:36 篇讲完了,可它们还是散的
36 篇,从"JDK 和 JRE 有什么区别"一路写到线程安全、JVM 内存、垃圾回收。
这一路我们是一篇一个点往前推的。好处是每个点都讲透了;坏处是——学完你手里攥着 36 个知识点,却说不清它们互相是什么关系。
哪个先学哪个后学?哪块是地基?哪块卡住了会连累后面?跳过去行不行?
所以最后一篇,我不讲新东西。
我把这 36 篇,压成了一张图。
五层楼,八块地,谁是谁的地基、谁盖在谁上面。看完你就知道:自己现在站在哪,下一步该往哪走。

地图怎么读
从上往下读,是学习顺序;从下往上看,是依赖关系。
下面的是上面的地基——第 3 层塌了,第 4 层那四间房迟早要歪。
第 1 层|环境与工具(第 1-4 篇)
JDK、JRE、JVM 一张图讲清楚 → 环境变量 → 代码怎么跑起来 → IDEA 还是 VS Code。
这块地一行业务代码都不写,但卡在这儿的人最多。它解决的是一件很朴素的事:你能不能开始。
- 卡住的信号:
javac 不是内部或外部命令(回第 2 篇) - 这块地的产出:一个能编译、能运行、能打断点的最小闭环
第 2 层|语法地基(第 5-12 篇)
数据类型、运算符、流程控制、循环、方法重载、数组,加上 main 的 String[] args 和新手 10 个低级错误。
八篇全是"写出来就能跑"的东西,也是后面所有地块的砖。
这层最容易埋雷的两个点:
i = i++(第 8 篇):看着像加 1,其实先取后加再覆盖,结果原地不动- 数组越界(第 12 篇):
ArrayIndexOutOfBoundsException,新手第一道坎
别小看这两个坑——后面第 32、33 篇的多线程事故,根子就在这儿:i++ 不是原子操作,到了多线程里就是"丢失更新"(第 33 篇实测两万次只剩 12945)。
第 3 层|面向对象(第 13-20 篇)
一切皆对象 → 类和对象 → 构造方法 → this → 封装 → 继承 → 多态 → 接口 vs 抽象类。
这是整个系列的分水岭。 跨过这八篇,你才从"会写 Java"变成"会用 Java 想问题"。
为什么这块必须排在集合前面?
因为 ArrayList 本身就是一个类,HashMap 的 key 要靠 equals 和 hashCode(第 22 篇)判断重复,泛型、迭代器、比较器——全是 OOP 的东西。跳过这层直接学集合,你只能背 API,不知道它为什么这么设计;等哪天要自己写一个工具类,就彻底没抓手。
第 4 层|四间并排的房(第 21-33 篇)
这是全图唯一可以挑着学的一层——四间房互不依赖,你想先开哪扇门都行:
| 房间 | 篇号 | 一句话 | 什么时候来 |
|---|---|---|---|
| 集合 | 21-26 | String 不可变、== 和 equals、ArrayList vs LinkedList、HashMap、遍历、装箱 | 天天都要用,面试高频区 |
| 异常 | 27·28·31 | try-catch-finally 顺序、受检 vs 运行时、自定义异常 | 程序开始"在外面跑"的时候 |
| IO | 29·30 | 读写文件 5 行入门、try-with-resources 自动关流 | 要存东西、读配置的时候 |
| 并发 | 32·33 | 多线程入门、线程安全 | 写出来要跑得快的时候 |
翻车率最高的是并发那间:run() 和 start() 分不清(第 32 篇)、两个线程一起 i++ 丢数据(第 33 篇)——这两个坑配图我在当时都画了实测数据,错一次记一辈子。
第 5 层|看幕后(第 34-35 篇)
JVM 内存模型、垃圾回收。
这两篇讲的不是"怎么写",而是"写出来的东西在机器里怎么活、怎么死"——对象在哪儿(栈还是堆)、什么时候被回收、为什么互相引用的两个对象照样是垃圾。
它画在最顶上,不是因为最难,而是因为它贯穿下面四层:你 new 的每一个对象都落在堆里(第 34 篇),每一个不再使用的对象都被 GC 收走(第 35 篇)。所以这一层你随时可以回头看,不用等到最后。
三条路线:下一步往哪走
图看完了。下一步去哪,取决于你想要什么:
① 准备面试 → 集合(21-26)→ 并发(32-33)→ JVM(34-35)
这三块占了 Java 初级面试的八成问题,尤其是 HashMap 和线程安全。
② 想写个能跑的东西 → 异常(27·28·31)+ IO(29·30)先补上,再回头把 OOP(13-20)的设计部分过一遍
能跑和能维护是两回事:前者靠语法,后者靠你怎么拆类。
③ 继续往深了走 → 集合源码 → 并发进阶(线程池、锁、并发容器)→ JVM 调优 → 拼一个完整项目
这条路的终点是把知识点串成系统,而不是继续攒知识点。
答案区
A1. 第 5 层——JVM 内存与垃圾回收(第 34-35 篇)。它不是"最后才用得上"的知识,而是贯穿下面每一层:任何一层写出来的对象都在堆里分配、都靠 GC 回收。所以它虽画在顶上,却随时可以回头看,不需要等学完前面四层。
A2. 因为集合本身就是用 OOP 写出来的。ArrayList 是个类,HashMap 判断 key 重复要靠 equals 和 hashCode(第 22 篇),泛型、迭代器、比较器全建立在类和接口之上。跳过 OOP 直接学集合,你只能死记 API 调用,一旦要自定义对象当 key、要自己写一个容器,就完全没抓手——先有对象的世界观,才有容器的用法。
下一站往哪走,你们说了算——Java 进阶(集合源码 / 并发 / JVM 调优)还是项目实战?评论区告诉我,票数高的先开。
本文示例代码均已本地实测通过,可直接运行。
对应文件:advanced/p36_roadmap/RoadmapDemo.java
橙码酱,分享更有用的技术知识,助你成为更优秀的开发者。