Skip to content

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 新特性
     (了解新工具,提升效率)

如果有基础,可以跳过前两步,直接从面向对象或集合框架开始。

版本选择

你的情况推荐版本
第一次学 JavaJDK 17+
要参加校招/社招JDK 17
公司老项目维护JDK 8 或 11
想尝鲜新技术JDK 21

不用担心学「旧版本」会落伍。Java 的核心设计 20 年没大变过——JDK 8 的知识在 21 里依然有效。

下一步

准备好了?找到你的起点,开始吧。

基于 VitePress 构建