Java 基础
写 Java 代码三年了,你有没有问过自己这个问题:
Java 程序到底是怎么跑起来的?
new 一个对象,内存从哪里分配?ArrayList 扩容的时候底层发生了什么?多线程同时修改一个变量,为什么有时候结果是对的,有时候是错的?Stream 到底是怎么实现惰性求值的?
这些问题,工作中不一定会遇到,但一旦遇到,就是线上 bug 的根源。面试中一问到原理,很多人就开始背答案——因为从来没真正搞懂过。
这套 Java 基础教程,不是帮你「学会写 Java」,而是帮你真正理解 Java 怎么工作。
学 Java 基础能解决什么问题
问题一:写代码靠试,运行靠运气
没有扎实的基础,写代码就是一个「试试看」的过程。编译通过就是对的,跑了不出错就是好的。
但业务系统上线后流量上来、并发上来、数据量上来——之前的「运气」就不管用了。ConcurrentHashMap 为什么线程安全?HashMap 扩容的时候会不会死循环?这些问题平时不会问,线上遇到就傻眼。
问题二:调优调了个寂寞
有人说:「我配置了 -Xms2g -Xmx2g,内存够大了,应该不会 OOM。」
但 OOM 的根因从来不只是内存大小,而是哪些对象占着内存不释放。不懂 GC 原理,不懂对象在堆里的生命周期,调优就是盲人摸象。
问题三:面试答不上来
面试官问:「HashMap 的底层结构是什么?扩容因子为什么是 0.75?」
很多人背过「数组+链表/JDK8以后是数组+链表+红黑树」,但被追问「为什么链表长度超过 8 才转红黑树」就卡住了。
因为没有真正理解这些设计背后的权衡。
内容地图
Java 基础模块分为六个部分,按从浅到深的顺序排列:
第一部分:初识 Java
Java 语言特性 · JDK 安装配置 · 第一个 Java 程序 · JVM/JRE/JDK 区别
这部分为零基础学习者准备。如果你从来没写过 Java,从这里开始:了解 Java 是什么、怎么装环境、怎么写出第一行代码。
第二部分:Java 基础语法
数据类型与变量 · 运算符 · 流程控制 · 数组 · 字符串 · 异常处理
任何语言的基础语法都是基本功。这部分内容看起来简单,但细节决定成败——自动拆装箱、值传递与引用传递、try-with-resources——这些看似「会用就行」的东西,背后都有原理。
第三部分:面向对象
面向对象 vs 面向过程 · 三大特性:封装/继承/多态 · 抽象类与接口 · 内部类与枚举 · 注解机制
面向对象是 Java 的核心思维方式。这部分不是教你「怎么写一个类」,而是帮你理解:为什么要有封装?继承的边界在哪里?接口为什么能实现多态?JDK 8 之后接口为什么可以有默认方法?
第四部分:基础 API
Object 类核心方法 · 包装类与自动拆装箱 · 日期时间 API · 反射机制 · 泛型 · 正则表达式
API 是 Java 提供给你的工具箱。知道有哪些工具、各自怎么用、什么时候该用什么——这是从「写代码」到「解决问题」的关键一步。
第五部分:集合框架
List(ArrayList/LinkedList) · Set(HashSet/TreeSet) · Map(HashMap/TreeMap) · 并发集合 · 迭代器模式
集合框架是 Java 最常用的模块,没有之一。你的数据存在哪里、怎么遍历、怎么查找——全都依赖集合。这部分不只要会用,还要理解底层实现:数组怎么扩容、链表怎么插入、红黑树怎么保持平衡、ConcurrentHashMap 怎么实现分段锁。
第六部分:IO 流
字节流与字符流 · 文件操作 · NIO 与零拷贝 · 序列化与反序列化
IO 是 Java 与外部世界交互的方式。文件读写、网络通信、对象持久化——都离不开 IO。这部分不只要会用流,还要理解 NIO 的 Buffer/Channel/Selector 模型,以及为什么零拷贝能显著提升文件传输性能。
第七部分:并发编程
线程基础 · synchronized 与 Lock · 线程池 · CAS 与原子类 · ThreadLocal · JUC 并发容器
并发是 Java 里水最深的部分之一。多线程带来性能,但带来复杂性。死锁、活锁、线程安全、可见性、有序性——这些概念不是在背面试题,而是真正理解「为什么多线程程序会出问题」的基础。
第八部分:JDK 新特性
Lambda 表达式 · Stream 流 · Optional 空指针防护 · 虚拟线程(JDK21)
Java 8 是一个分水岭,引入了 Lambda、Stream、Optional、新的日期时间 API。之后的每个版本都在此基础上继续演进。JDK 21 的虚拟线程更是彻底改变了并发编程的思维方式。
第九部分:实战与规范
代码规范(阿里巴巴手册) · 单元测试(JUnit5/Mockito) · 日志最佳实践 · 高频面试题汇总
会写代码和写好代码是两回事。这部分解决的是「怎么写出团队里大家都愿意维护的代码」,以及「面试前怎么高效复习」。
学习顺序建议
如果是零基础,按这个顺序走:
第一步:初识 Java → 环境搭建 + 第一个程序
↓ (建立信心,知道 Java 能跑起来)
第二步:Java 基础语法
↓ (边学边敲,所有示例都要自己跑一遍)
第三步:面向对象
↓ (核心思维方式,慢慢理解,急不来)
第四步:基础 API + 集合框架
↓ (最实用的两个模块,边学边用)
第五步:IO 流 + 并发编程
(进阶内容,可以反复看)
第六部分:JDK 新特性
(了解新工具,提升效率)如果有基础,可以跳过前两步,直接从面向对象或集合框架开始。
版本选择
| 你的情况 | 推荐版本 |
|---|---|
| 第一次学 Java | JDK 17+ |
| 要参加校招/社招 | JDK 17 |
| 公司老项目维护 | JDK 8 或 11 |
| 想尝鲜新技术 | JDK 21 |
不用担心学「旧版本」会落伍。Java 的核心设计 20 年没大变过——JDK 8 的知识在 21 里依然有效。
下一步
- 想了解 Java 能做什么、有什么特点 → Java 语言特性
- 想直接装环境写代码 → JDK 安装配置
- 想先搞懂 Java 和 JVM 的关系 → JVM/JRE/JDK 区别
- 想直接进入某个具体模块 → 从侧边栏选择对应章节
准备好了?找到你的起点,开始吧。
