社交媒体

全景回顾

全景回顾

钩子:36 篇讲完了,可它们还是散的

36 篇,从"JDK 和 JRE 有什么区别"一路写到线程安全、JVM 内存、垃圾回收。

这一路我们是一篇一个点往前推的。好处是每个点都讲透了;坏处是——学完你手里攥着 36 个知识点,却说不清它们互相是什么关系。

哪个先学哪个后学?哪块是地基?哪块卡住了会连累后面?跳过去行不行?

所以最后一篇,我不讲新东西。

我把这 36 篇,压成了一张图。

五层楼,八块地,谁是谁的地基、谁盖在谁上面。看完你就知道:自己现在站在哪,下一步该往哪走。


36-Java基础全景地图.png

地图怎么读

从上往下读,是学习顺序;从下往上看,是依赖关系。

下面的是上面的地基——第 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


橙码酱,分享更有用的技术知识,助你成为更优秀的开发者。