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综合实战

学习过程中不要因为某一章简单就完全跳过验收,也不要因为某一章很难就在第一次学习时无限下钻。

始终记住三个问题:

  1. 我能不能解释?
  2. 我能不能自己写?
  3. 我能不能在真实问题中使用?

如果三个答案都逐渐变成“可以”,JavaSE 就不再是一堆零散知识,而会形成完整的编程能力体系。