《Java 编程入门》全 61 篇,是一套以一个真实项目为主线的 Java 入门书:第 1 章从
LibraryApp的命令分发骨架起步,第 2–3 章装好 JDK 25 与 Maven,第 4–6 章补齐类型、控制流与方法,第 7–9 章建立领域模型,第 10–12 章用集合、泛型与 Stream 实现搜索统计,第 13–15 章处理异常、文件与时间,第 16–18 章补测试、打包并交付一个可运行的 REST 服务。示例以 JDK 25 LTS 为主线、JDK 21 LTS 为对照。
本页是《Java 编程入门》的全书目录:按章节顺序列出全部 61 篇,点击标题直达正文。也可以从各节末尾的「阅读导航」按顺序通读,或先看目录篇 里的三条学习路径与八周计划。
全书概览
| 项目 | 内容 |
|---|---|
| 书稿 | 《Java 编程入门》 |
| 篇数 | 61 篇(正文 18 章 54 节 + 目录篇 + 序 + 前言 + 附录 A–D) |
| 领域 | Java 语言从零到可交付服务 |
| 贯穿项目 | library —— 一个图书管理项目,18 章逐步长大 |
| 阅读方式 | 从目录篇 进入按顺序通读,或按查漏场景跳读 |
| 主线版本 | JDK 25 LTS(Temurin 25.0.5+8),JDK 21 LTS 作对照 |
| 构建工具 | Maven 3.9.12,编译目标通过 maven.compiler.release 固定 |
| 上级专题 | 书稿专题 |
全书目录
前置
| 节 | 文章 | 核心内容 |
|---|---|---|
| — | 目录与学习路径 | 全书导航页:读者定位、三条学习路径与八周计划、六部分依赖关系与 54 节逐节索引 |
| — | 序 | 为什么还要写一套 Java 书、与已有 Spring Boot 三部曲和 Java 专题的分工、四卷本路线 |
| — | 前言 | 读者对象、前置知识、环境清单与真实版本输出、代码约定、三种验证方式 |
| 附 A | 附录 A 语法速查 | 基本类型、变量、运算符、控制流、类与接口、record/enum/sealed、泛型、集合、Stream、异常、NIO、时间、正则 |
| 附 B | 附录 B 标准库地图 | 按「想做什么 → 用哪个包/类」组织常用 JDK API,覆盖 java.lang 到 java.net.http 与 java.util.concurrent |
| 附 C | 附录 C 版本差异 | JDK 21 到 25 的正式特性与预览特性、迁移建议、常见误解 |
| 附 D | 附录 D 常见编译与运行错误 | 按报错关键词定位:找不到符号、类型不兼容、找不到主类、版本不匹配、空指针、并发修改、乱码、依赖冲突 |
第一部分:起步(第 1–3 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 1.1 | 1.1 Java 解决了什么问题 | 字节码与 JVM、跨平台的能力边界、优势与代价、第一个 LibraryApp 骨架 |
| 1.2 | 1.2 版本节奏与 LTS | 半年一发与 LTS、版本号读法、JDK 21/25/27 对比、--release 与 Toolchains |
| 1.3 | 1.3 JVM、JRE 与 JDK | 三层边界、JDK 工具清单、class 文件头、解释与 JIT、jlink 裁剪运行时 |
| 2.1 | 2.1 安装 JDK 25 | Temurin 安装、JAVA_HOME 与 PATH、多版本切换、安装后的验证 |
| 2.2 | 2.2 Maven 与标准目录结构 | pom.xml 最小结构、src/main/java 与 src/test/java、坐标与依赖 |
| 2.3 | 2.3 IDE、JShell 与命令行 | 三种工具的分工、JShell 快速验证、IDE 索引与命令行构建的一致性 |
| 3.1 | 3.1 Hello, Library | javac/java 完整流程、-d 输出目录、包名与全限定类名 |
| 3.2 | 3.2 包、模块与可见性 | 包命名、目录映射、四种访问级别、module-info.java 的位置 |
| 3.3 | 3.3 Maven 生命周期 | compile/test/package/install、插件绑定、常用命令与产物位置 |
第二部分:语言基础(第 4–6 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 4.1 | 4.1 基本类型与包装类型 | 八种基本类型、宽度与范围、装箱拆箱、缓存区间、null 风险 |
| 4.2 | 4.2 var、final 与类型推断 | 局部变量推断的边界、final 的三种语义、可读性取舍 |
| 4.3 | 4.3 运算符、溢出与数值边界 | 整数除法、溢出回绕、Math.addExact、浮点误差、BigDecimal 使用场景 |
| 5.1 | 5.1 if、for、while | 条件与循环的写法、提前返回、循环边界、把流程写成可读的句子 |
| 5.2 | 5.2 switch 表达式与 yield | 箭头形式、穷尽性、yield、与传统 switch 的差异 |
| 5.3 | 5.3 instanceof 模式匹配与守卫 | 类型模式、绑定变量作用域、when 守卫、与强转的区别 |
| 6.1 | 6.1 方法签名、重载与可变参数 | 签名构成、重载解析顺序、可变参数、返回值设计 |
| 6.2 | 6.2 值传递的真相 | Java 只有值传递、对象引用传值、修改字段与重新赋值、常见误解 |
| 6.3 | 6.3 作用域、生命周期与栈帧 | 块作用域、变量遮蔽、栈帧结构、递归与栈深度 |
第三部分:面向对象(第 7–9 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 7.1 | 7.1 类、字段与方法 | 类的组成、实例与静态成员、this、对象创建过程 |
| 7.2 | 7.2 构造器、this 与初始化顺序 | 构造器重载、this(...) 委托、字段默认值与初始化块顺序 |
| 7.3 | 7.3 封装与不可变 | 访问控制、防御性复制、不可变对象的设计规则与收益 |
| 8.1 | 8.1 继承与 super | extends、super 调用、方法重写规则、组合优于继承 |
| 8.2 | 8.2 接口、default 方法与抽象类 | 接口演化、default/static 方法、抽象类与接口的选择 |
| 8.3 | 8.3 多态与动态分派 | 向上转型、运行时方法查找、@Override 的价值、多态的成本 |
| 9.1 | 9.1 record:数据载体的最短写法 | 紧凑构造器、自动生成的方法、record 的限制与适用边界 |
| 9.2 | 9.2 enum:把常量写成类型 | 枚举字段与方法、values/valueOf、switch 穷尽性、单例用法 |
| 9.3 | 9.3 sealed 与模式匹配 | sealed/permits、封闭继承体系、与 switch 模式匹配的组合 |
第四部分:集合与泛型(第 10–12 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 10.1 | 10.1 List、Set、Map | 三大接口的语义、常用实现、不可变工厂、选型速查 |
| 10.2 | 10.2 复杂度与内存 | 常见操作复杂度、扩容与负载因子、对象头与装箱开销 |
| 10.3 | 10.3 遍历、排序与比较器 | 迭代器、Comparable/Comparator、多字段排序、稳定排序 |
| 11.1 | 11.1 泛型类与方法 | 类型参数、有界类型、泛型方法推断、静态成员的限制 |
| 11.2 | 11.2 通配符与 PECS | ? extends/? super、读写约束、PECS 记忆法与 API 设计 |
| 11.3 | 11.3 类型擦除与运行时真相 | 擦除规则、桥方法、不能 new T()、反射与泛型数组的限制 |
| 12.1 | 12.1 Lambda 与函数式接口 | 函数式接口、方法引用、变量捕获、@FunctionalInterface |
| 12.2 | 12.2 Stream 管道 | 中间/终端操作、惰性求值、collect 与 toList、并行流的边界 |
| 12.3 | 12.3 Optional 与惰性求值 | Optional 的正确用法、map/flatMap/orElseThrow、滥用场景 |
第五部分:异常、IO 与常用库(第 13–15 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 13.1 | 13.1 受检与非受检异常 | 异常层次、何时用受检异常、finally 与异常屏蔽 |
| 13.2 | 13.2 try-with-resources 与关闭顺序 | AutoCloseable、逆序关闭、getSuppressed、资源泄漏排查 |
| 13.3 | 13.3 异常转换与用户可见错误 | 包装与保留原因、领域异常、错误码与用户提示的分层 |
| 14.1 | 14.1 Path 与 Files | Path 的组成、相对与绝对、读写、复制移动、异常处理 |
| 14.2 | 14.2 字节流、字符流与编码 | 字节与字符的边界、Charset、BOM、乱码的成因与修复 |
| 14.3 | 14.3 目录遍历与 WatchService | Files.walk、访问者模式、文件监听、事件去抖 |
| 15.1 | 15.1 java.time | LocalDate/Instant/ZonedDateTime、时区换算、Duration 与 Period |
| 15.2 | 15.2 String、StringBuilder 与文本块 | 字符串不可变、拼接成本、StringBuilder、文本块与缩进规则 |
| 15.3 | 15.3 正则表达式 | Pattern/Matcher、分组、贪婪与懒惰、ISBN 校验、性能陷阱 |
第六部分:工程与交付(第 16–18 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 16.1 | 16.1 JUnit 5 | 断言、生命周期、参数化测试、测试命名与失败信息 |
| 16.2 | 16.2 测试替身 | Stub、Fake、Mock 的区别、依赖注入、测试边界 |
| 16.3 | 16.3 可测试性设计 | 纯函数、副作用隔离、时间与随机数的注入、测试金字塔 |
| 17.1 | 17.1 Maven 依赖、作用域与冲突 | compile/test/provided/runtime、传递依赖、dependencyManagement |
| 17.2 | 17.2 可执行 jar 与模块化 jar | Main-Class、maven-jar-plugin、fat jar、jlink 与 jpackage |
| 17.3 | 17.3 版本、发布与可复现构建 | 语义化版本、outputTimestamp、依赖锁定、发布检查清单 |
| 18.1 | 18.1 需求与领域模型 | 借阅、归还、查询的用例、聚合与不变量、从需求到类型 |
| 18.2 | 18.2 内存仓储与 CLI 交互 | 仓储接口与实现、命令解析、输入校验、错误提示 |
| 18.3 | 18.3 用 com.sun.net.httpserver 暴露 REST 接口 | 路由、JSON 编解码、状态码、优雅关闭、从 CLI 到服务的演进 |
怎么读这套书
- 系统学(约 8 周):按 1→18 章顺序读,每周 2–3 章,代码手敲一遍;第 8 周不看答案重写
library。 - 快速过(约 3 周):第 1–3 章两天跑通工具链;第 4–6 章读小结与示例;第 7–12 章正常读;第 13–18 章跟项目。
- 查漏补缺:从上面的章节表按关键词跳转。高频入口:泛型看第 11 章,集合看第 10 章,异常看第 13 章,测试看第 16 章,打包看第 17 章。
三条路径的详细说明、每周任务与检查点,见目录篇 。
与站内其他 Java 内容的分工
- 本书:Java 语言与 JDK 本身,从语法到可交付的小型服务,不依赖 Spring。
- Spring Boot 三部曲 :在会 Java 的前提下讲 Web 框架、数据访问、配置与部署。
- Java 专题 :按主题深入的文章,适合查具体问题,不按学习顺序组织。
如果你还没有 Java 基础,建议先读完本书第 1–13 章,再进入 Spring Boot;如果已经会 Java,只想补工程能力,可以直接从第 16–18 章开始。
版本与验证约定
- 主线 JDK 25 LTS,对照 JDK 21 LTS;用到 25 独有语法的地方会在正文标注。
- 编译目标默认 21,
pom.xml用maven.compiler.release固定,避免本机 JDK 升级后产物悄悄变化。 - 代码块标
java,命令标bash,真实输出标text,pom.xml标xml。 - 标「示意」的输出不是实测结果;标
...的位置表示省略,直接复制通常不能编译。
下一步
读完卷一后,卷二《Java 编程实战》会把 library 扩展成带持久化、并发与可观测性的完整应用;卷三讲高级语言特性与设计;卷四讲 JVM 原理与性能调优。四卷的边界与先后关系,见序
。