Java 学习路线图 (Roadmap)
在学习之前,先了解一个清晰的学习路径,会让你更有方向感。

-
基础入门
- 环境搭建 (JDK, IDE)
- 第一个 Java 程序 (Hello World)
- 基本语法 (变量、数据类型、运算符)
- 流程控制 (条件、循环)
- 数组
-
面向对象编程
- 类与对象
- 成员变量与方法
- 构造方法
- 封装、继承、多态
- 抽象类与接口
- 内部类
-
核心 API
- 字符串处理 (
String,StringBuilder,StringBuffer) - 常用工具类 (
Math,Date,Calendar,LocalDate/Time) - 集合框架 (
List,Set,Map及其实现类) - I/O 流 (文件读写)
- 异常处理
- 字符串处理 (
-
高级特性
(图片来源网络,侵删)- 泛型
- 枚举
- 注解
- 反射
- Lambda 表达式与 Stream API (Java 8+)
-
企业级开发
- 多线程与并发编程
- 网络编程
- 数据库连接
- 常用框架 (如 Spring Boot)
第一部分:Java 基础入门
环境搭建
在开始写代码之前,你需要安装 Java 开发环境。
- JDK (Java Development Kit): Java 开发工具包,包含了编译器、运行时环境等,推荐使用 LTS (长期支持) 版本,如 JDK 8, JDK 11 或 JDK 17。
- 下载地址: Oracle JDK 或 OpenJDK
- IDE (集成开发环境): 代码编辑器,能极大提高开发效率,强烈推荐:
- IntelliJ IDEA: 目前最流行、功能最强大的 Java IDE,社区版免费。
- Eclipse: 经典的开源 IDE,免费且插件丰富。
- 构建工具: 用于管理项目依赖和构建流程。
- Maven 或 Gradle (推荐 Gradle,更现代)。
配置步骤简述:
- 安装 JDK。
- 配置系统环境变量
JAVA_HOME和Path。 - 验证安装:打开命令行,输入
java -version和javac -version。
第一个 Java 程序:Hello World
创建一个 HelloWorld.java 文件:

// HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
// 向控制台打印 "Hello, World!"
System.out.println("Hello, World!");
}
}
编译与运行:
- 打开命令行,进入
HelloWorld.java所在的目录。 - 编译:
javac HelloWorld.java(生成HelloWorld.class文件) - 运行:
java HelloWorld(运行程序)
基本语法
- 变量与数据类型:
- 基本类型:
byte,short,int,long,float,double,char,boolean。 - 引用类型:
String, 数组, 以及所有自定义的类。
- 基本类型:
- 运算符: 算术 (, , , , )、关系 (
>,<, , )、逻辑 (&&, , )、赋值 (, ) 等。 - 流程控制:
- 条件语句:
if-else,switch - 循环语句:
for,while,do-while
- 条件语句:
示例:
int score = 85;
if (score >= 90) {
System.out.println("优秀");
} else if (score >= 60) {
System.out.println("及格");
} else {
System.out.println("不及格");
}
// for 循环打印 1 到 5
for (int i = 1; i <= 5; i++) {
System.out.println("i = " + i);
}
数组
用于存储固定大小的同类型元素。
// 声明并初始化一个整型数组
int[] numbers = {1, 2, 3, 4, 5};
// 访问数组元素
System.out.println(numbers[0]); // 输出 1
// 遍历数组
for (int num : numbers) {
System.out.println(num);
}
第二部分:面向对象编程
这是 Java 的核心思想。
类与对象
- 类: 创建对象的模板,定义了对象的属性(成员变量)和行为(方法)。
- 对象: 类的实例,是具体的实体。
// 定义一个 Dog 类
class Dog {
// 成员变量 (属性)
String name;
int age;
// 方法 (行为)
void bark() {
System.out.println(name + " 正在汪汪叫!");
}
}
// 使用 Dog 类
public class TestDog {
public static void main(String[] args) {
// 创建 Dog 对象
Dog myDog = new Dog();
// 给对象属性赋值
myDog.name = "旺财";
myDog.age = 3;
// 调用对象的方法
myDog.bark(); // 输出: 旺财 正在汪汪叫!
}
}
封装、继承、多态
- 封装: 将数据(属性)和操作数据的方法(行为)包装在一个单元(类)中,并隐藏内部细节,只暴露必要的接口,通过
private关键字实现。 - 继承: 一个类可以继承另一个类的属性和方法,实现代码复用,使用
extends关键字。 - 多态: 同一个接口,使用不同的实例而执行不同操作,通过父类引用指向子类对象来实现。
示例:
// 父类 Animal
class Animal {
void eat() {
System.out.println("动物在吃东西");
}
}
// 子类 Dog 继承 Animal
class Dog extends Animal {
// 重写父类的 eat 方法
@Override
void eat() {
System.out.println("狗在吃骨头");
}
}
// 测试多态
public class TestPolymorphism {
public static void main(String[] args) {
Animal myAnimal = new Dog(); // 父类引用指向子类对象
myAnimal.eat(); // 输出: 狗在吃骨头 (调用的是 Dog 的 eat 方法)
}
}
抽象类与接口
- 抽象类: 包含抽象方法(没有方法体)的类,不能被实例化,用于被继承。
- 接口: 更纯粹的抽象,只包含抽象方法(Java 8+ 后可以有默认方法和静态方法),用于实现多态和定义规范。
第三部分:核心 API
Java 提供了丰富的标准库,让你能轻松完成各种任务。
字符串
String 是最常用的类,但它的内容是不可变的。
String s1 = "Hello";
String s2 = "World";
String s3 = s1 + " " + s2; // 拼接
System.out.println(s3); // Hello World
// 对于频繁修改字符串,使用 StringBuilder
StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" ");
sb.append("World");
System.out.println(sb.toString()); // Hello World
集合框架
用于存储和操作一组对象,主要分为三大类:
- List: 有序、可重复,常用实现类
ArrayList(数组实现, 查找快) 和LinkedList(链表实现, 增删快)。 - Set: 无序、不可重复,常用实现类
HashSet(哈希表实现) 和TreeSet(红黑树实现, 有序)。 - Map: 键值对存储,键唯一,值可重复,常用实现类
HashMap(哈希表实现) 和TreeMap(红黑树实现, 键有序)。
示例:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
// 使用 ArrayList
List<String> names = new ArrayList<>();
names.add("张三");
names.add("李四");
System.out.println(names.get(0)); // 张三
// 使用 HashMap
Map<String, Integer> studentScores = new HashMap<>();
studentScores.put("张三", 90);
studentScores.put("李四", 85);
System.out.println("张三的分数: " + studentScores.get("张三")); // 张三的分数: 90
异常处理
程序运行时可能出现的错误,通过 try-catch-finally 机制来捕获和处理。
try {
int[] arr = {1, 2, 3};
System.out.println(arr[5]); // 会抛出 ArrayIndexOutOfBoundsException
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("数组越界了!");
e.printStackTrace(); // 打印错误堆栈信息
} finally {
System.out.println("无论是否发生异常,这里都会执行。");
}
第四部分:高级特性
Lambda 表达式与 Stream API (Java 8+)
这是现代 Java 的革命性特性,让代码更简洁、更函数式。
-
Lambda 表达式: 一种匿名函数,可以简化代码。
// 传统方式 Runnable r1 = new Runnable() { @Override public void run() { System.out.println("Hello from r1"); } }; // Lambda 方式 Runnable r2 = () -> System.out.println("Hello from r2"); -
Stream API: 用于对集合进行链式、函数式的操作。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); // 找出所有偶数,并求和 int sum = numbers.stream() // 创建流 .filter(n -> n % 2 == 0) // 过滤:只保留偶数 .mapToInt(n -> n) // 转换为 IntStream .sum(); // 求和 System.out.println("偶数之和: " + sum); // 输出 30
第五部分:企业级开发
当你掌握了基础,就可以开始学习如何构建大型应用了。
多线程
Java 内置了对多线程的支持,可以充分利用多核 CPU。
- 创建线程:
- 继承
Thread类。 - 实现
Runnable接口 (更常用)。
- 继承
- 并发工具:
synchronized关键字、Lock接口、ExecutorService(线程池) 等。
数据库连接
Java 应用通常需要与数据库交互,标准方式是 JDBC。
- JDBC: Java 提供的一套访问数据库的 API。
- 连接池: 如 HikariCP,用于管理数据库连接,提高性能。
- ORM 框架: 如 MyBatis, Hibernate,能让你用面向对象的方式操作数据库,无需写复杂的 SQL。
框架
框架封装了底层细节,让你能专注于业务逻辑开发。
- Spring Boot: 目前最流行的 Java 企业级开发框架,它简化了 Spring 应用的创建和部署,约定大于配置,能让你快速搭建一个生产级别的 Web 应用。
学习 Spring Boot 是现代 Java 开发者的必备技能。
学习资源推荐
-
官方文档
- Oracle Java Tutorials: 最权威、最全面的官方教程,英文版。
- OpenJDK 文档: 同样权威,开源社区的文档。
-
在线教程 (中文)
- 菜鸟教程: 非常适合新手入门,有大量实例。
- 廖雪峰的 Java 教程: 内容深入,讲解清晰,适合有一定基础后深入学习。
- B站/慕课网: 搜索“Java零基础”、“Java入门”等关键词,有大量免费和付费的视频课程。
-
书籍
- 入门: 《Head First Java》:图文并茂,非常有趣,适合零基础。
- 进阶: 《Java核心技术 卷 I》:经典之作,内容全面且深入。
- 参考: 《Effective Java》:Java 编程的最佳实践,必读经典。
-
社区
- Stack Overflow: 全球最大的程序员问答社区,遇到问题先搜索这里。
- GitHub: 阅读优秀开源项目的源码,是提升最快的方式之一。
学习建议
- 动手实践: 不要只看,一定要亲手敲代码,并尝试修改和扩展。
- 由浅入深: 先打好基础,再学习高级特性,不要急于求成。
- 多思考: 理解“为什么”这么设计,而不仅仅是“怎么用”。
- 多查资料: 遇到问题,学会利用搜索引擎和官方文档。
- 做项目: 学完基础后,尝试做一些小项目,如图书管理系统、简单的博客等,将知识融会贯通。
祝你学习愉快!
