JavaSE 完整学习路线 | JavaSE
JavaSE 完整学习路线
一、目标与定位
学习 JavaSE 最容易出现的一个问题,是“知识点知道很多,但不知道它们之间是什么关系”。
变量、数组、对象、接口、异常、泛型、集合、Stream、IO、多线程……如果只是一个个孤立学习,很容易变成零散知识。
所以正式开始之前,需要先建立一张完整的 JavaSE 地图。
本教程冻结为:
12 个 GROUP,共 131 个 CHAPTER。
下面的学习路线不会重新划分课程结构,而是解释这 12 个分组为什么按照当前顺序出现,以及每个阶段需要建立什么能力。
整体主线可以理解为:
Java运行环境
↓
Java基本语法
↓
面向对象
↓
核心API
↓
异常与泛型
↓
集合框架
↓
函数式数据处理
↓
文件与IO
↓
多线程与并发
↓
网络通信
↓
反射、注解、动态代理等高级能力
↓
综合项目
二、核心说明
2.1 GROUP 00 · 学习指南
4 章
这一组不教授具体 Java 语法,而是解决:
- JavaSE 应该按什么顺序学习?
- 什么叫真正学会?
- 怎么训练?
- 什么时候可以进入下一阶段?
如果学习方法本身存在问题,后续投入再多时间也可能变成低效率重复。
2.2 GROUP 01 · Java基础语法
14 章
这是整个 Java 编程能力的地基。
主要建立:
- Java 技术体系基本认识;
- JDK、JRE、JVM 基础;
- Java 程序编译与运行过程;
- IDEA 开发环境;
- 注释、标识符与命名;
- 字面量、变量、数据类型;
- 进制与数据存储;
- 类型转换;
- 运算符;
- Scanner;
- 方法;
- 分支;
- 循环;
- 数组与二维数组。
学完这一组以后,应具备:
使用 Java 基础语法独立编写小型控制台程序的能力。
2.3 GROUP 02 · Java面向对象
19 章
这是 JavaSE 最重要的核心区域之一。
从这里开始,程序不再只是:
“从上往下写一堆语句”。
而是逐渐学习如何通过:
- 类;
- 对象;
- 封装;
- 继承;
- 多态;
- 抽象类;
- 接口;
对程序中的数据和行为进行建模。
同时学习:
- 构造器;
- this;
- static;
- super;
- final;
- instanceof;
- 枚举;
- 单例模式;
- 模板方法模式;
- 内部类;
- 匿名内部类。
学完以后,应能够从“写代码”进一步走向:
设计对象以及对象之间的关系。
2.4 GROUP 03 · Java核心API
6 章
Java 本身已经提供了大量可以直接使用的类。
这一阶段重点掌握:
- String;
- StringBuilder;
- Arrays;
- LocalDate / LocalTime / LocalDateTime;
- BigDecimal。
这里不仅是在学习几个类,更重要的是开始建立:
阅读和使用 Java API 的能力。
2.5 GROUP 04 · 异常与泛型
9 章
这一组包含两个非常重要的能力。
异常
解决:
程序发生异常情况时,应该如何描述、传播、捕获和处理?
包括:
- Java 异常体系;
- 编译时异常与运行时异常;
- try-catch-finally;
- throw;
- throws;
- 自定义异常。
泛型
解决:
在保证类型安全的前提下,让代码能够处理一类类型,而不是只服务某一个具体类型。
包括:
- 泛型基础;
- 泛型类;
- 泛型接口;
- 泛型方法;
- 通配符;
- 上下限。
泛型是后续深入理解集合框架的重要基础。
2.6 GROUP 05 · Java集合框架
18 章
数组只能解决一部分数据存储问题。
进入真实程序后,经常需要:
- 动态存储多个对象;
- 去重;
- 排序;
- 根据 key 查询 value;
- 根据业务需求选择不同的数据结构。
因此需要集合框架。
主要学习:
- Collection;
- Iterator;
- List;
- ArrayList;
- LinkedList;
- Set;
- HashSet;
- LinkedHashSet;
- TreeSet;
- Comparable;
- Comparator;
- Map;
- HashMap;
- LinkedHashMap;
- TreeMap;
- Collections。
这一组不仅要学 API,还要开始建立:
数据结构选择意识。
2.7 GROUP 06 · Lambda与Stream
10 章
在已经具备:
- 面向对象;
- 接口;
- 泛型;
- 集合;
这些基础以后,开始学习更加现代的数据处理方式。
主要包括:
- 函数式编程思想;
- 函数式接口;
- Lambda;
- 方法引用;
- Stream 创建;
- Stream 中间操作;
- Stream 终结操作;
- Stream 收集结果;
- 综合案例。
这一阶段的重要变化是:
从“告诉计算机每一步怎么循环”
逐渐走向:
“描述我想对数据做什么”。
2.8 GROUP 07 · File与IO
14 章
到这一阶段,程序需要开始与外部数据交互。
主要学习:
- File;
- 文件与目录;
- 递归;
- 字符集;
- Unicode;
- UTF-8;
- 编码与解码;
- 字节流;
- 字符流;
- 缓冲流;
- 转换流;
- 打印流;
- 数据流;
- try-with-resources;
- Commons IO。
学习重点不仅是“会读写文件”,还要理解:
数据以什么形式存在,以及如何可靠地进入和离开程序。
2.9 GROUP 08 · 多线程与并发
10 章
前面的程序大多数可以按照单线程思维理解。
这一组开始处理:
多个执行任务同时存在时会发生什么?
主要学习:
- 进程与线程;
- 并发与并行;
- Thread;
- Runnable;
- Callable;
- FutureTask;
- Thread API;
- 线程安全;
- synchronized;
- Lock;
- ExecutorService;
- ThreadPoolExecutor;
- 任务队列;
- 拒绝策略。
多线程是 JavaSE 中难度明显提高的一组。
学习时必须同时关注:
代码执行结果 + 执行时序 + 共享数据 + 线程安全。
2.10 GROUP 09 · Java网络编程
10 章
文件解决的是程序与本地数据之间的交互。
网络编程进一步解决:
两个不同程序之间如何跨网络通信?
主要学习:
- IP;
- 端口;
- 通信协议;
- InetAddress;
- UDP;
- TCP;
- Socket;
- ServerSocket;
- 多客户端通信;
- 多线程服务端;
- 线程池优化;
- B/S 架构;
- HTTP 响应基础。
完成这一阶段以后,可以开始真正理解:
客户端和服务器之间到底是如何建立通信的。
2.11 GROUP 10 · Java高级技术
12 章
这一组开始接触很多 Java 框架背后的基础思想。
包括:
- JUnit;
- 单元测试;
- Class;
- Constructor;
- Field;
- Method;
- 反射;
- 注解;
- 注解解析;
- 代理模式;
- JDK 动态代理;
- InvocationHandler。
尤其是:
反射 + 注解 + 动态代理
以后会频繁出现在 Java 框架学习中。
这一阶段的重点不是单纯记 API,而是开始理解:
Java 框架为什么能够自动发现类、读取配置、增强方法并管理对象。
2.12 GROUP 11 · JavaSE综合实战
5 章
最后通过完整任务检验前面学到的内容。
包括:
- 控制台学生管理系统;
- GUI 编程与事件驱动;
- 石头迷阵 GUI 综合项目;
- 局域网即时通信系统;
- JavaSE 全体系综合验收。
综合项目不会再告诉你:
“这里应该使用 ArrayList。”
真正需要训练的是:
面对需求以后,自己判断应该使用什么技术。
三、执行方案
推荐严格按照当前教程顺序推进。
第一阶段:打牢程序设计基础
完成:
GROUP 01 → GROUP 02
目标:
- 能写基本 Java 程序;
- 能使用方法拆分逻辑;
- 能使用数组处理批量数据;
- 能使用面向对象方式设计程序;
- 理解封装、继承、多态、接口。
这是整个 JavaSE 最重要的地基。
第二阶段:建立 Java 数据处理能力
完成:
GROUP 03 → GROUP 04 → GROUP 05 → GROUP 06
目标:
- 熟悉常用核心 API;
- 能处理异常;
- 理解泛型;
- 掌握集合框架;
- 能根据业务需求选择集合;
- 掌握 Lambda 和 Stream。
完成以后,已经能够处理相当一部分真实程序中的数据问题。
第三阶段:建立系统交互能力
完成:
GROUP 07 → GROUP 08 → GROUP 09
目标:
- 读写文件;
- 理解字符编码;
- 掌握 IO;
- 创建并管理线程;
- 理解线程安全;
- 使用线程池;
- 实现 UDP / TCP 通信;
- 理解基础客户端—服务器模型。
第四阶段:理解高级机制
完成:
GROUP 10
目标:
- 编写基本单元测试;
- 使用反射读取类结构;
- 理解注解;
- 理解代理模式;
- 使用 JDK 动态代理;
- 初步建立 Java 框架底层思想。
第五阶段:综合应用
完成:
GROUP 11
不要把这一阶段理解成“看项目代码”。
正确方式是:
需求 → 分析 → 设计 → 编码 → 测试 → Debug → 验收
最终完成整个 JavaSE 的知识闭环。
四、阶段标准
基础语法阶段完成
应该能够:
- 独立建立 Java 程序;
- 使用变量、运算符、分支、循环;
- 定义并调用方法;
- 使用数组;
- 完成基础控制台程序。
面向对象阶段完成
应该能够:
- 自己设计类;
- 正确创建和使用对象;
- 使用封装;
- 判断继承关系;
- 理解并使用多态;
- 判断抽象类和接口的适用场景。
集合与函数式阶段完成
应该能够:
- 根据数据特征选择 List / Set / Map;
- 正确遍历集合;
- 理解 equals / hashCode 对去重和哈希结构的影响;
- 使用 Comparator;
- 使用 Lambda;
- 使用 Stream 完成常见数据处理。
IO与并发阶段完成
应该能够:
- 处理文件和目录;
- 正确选择字节流与字符流;
- 解释基本编码问题;
- 创建线程;
- 分析基本线程安全问题;
- 使用同步机制;
- 使用线程池处理任务。
网络与高级技术阶段完成
应该能够:
- 理解 IP、端口、协议;
- 编写基础 UDP/TCP 程序;
- 处理多个客户端;
- 编写基础 JUnit 测试;
- 使用反射读取类信息;
- 定义和解析注解;
- 理解并实现基础动态代理。
JavaSE 总体验收
最终目标不是:
“这些内容我都听说过。”
而是:
给出一个合理的 JavaSE 需求,我能够分析需要哪些知识,并独立完成核心实现。
五、行动清单
按照下面的顺序推进即可:
00 学习指南
↓
01 Java基础语法
↓
02 Java面向对象
↓
03 Java核心API
↓
04 异常与泛型
↓
05 Java集合框架
↓
06 Lambda与Stream
↓
07 File与IO
↓
08 多线程与并发
↓
09 Java网络编程
↓
10 Java高级技术
↓
11 JavaSE综合实战
学习过程中不要因为某一章简单就完全跳过验收,也不要因为某一章很难就在第一次学习时无限下钻。
始终记住三个问题:
- 我能不能解释?
- 我能不能自己写?
- 我能不能在真实问题中使用?
如果三个答案都逐渐变成“可以”,JavaSE 就不再是一堆零散知识,而会形成完整的编程能力体系。