以下是结合Java 21最新特性和现代开发工具的Java入门实操指南,包含环境配置、基础语法、面向对象编程和实际项目案例:
Java 21 入门实操指南(2025年版)
一、环境搭建(Java 21 + IntelliJ IDEA)
安装JDK 21(LTS)
从Oracle官网或Adoptium下载并安装Java 21,配置环境变量:# macOS/Linux 配置(~/.bashrc 或 ~/.zshrc) export JAVA_HOME=/path/to/jdk-21 export PATH=$JAVA_HOME/bin:$PATH
安装IntelliJ IDEA 2025.1
从JetBrains官网下载旗舰版,安装后配置:- 打开
File > Project Structure
,设置Project SDK为Java 21。 - 启用Preview Features:
Help > Edit Custom VM Options
,添加-ea --enable-preview
。
- 打开
二、Java 21 新特性快速上手
虚拟线程(Virtual Threads)
简化高并发编程,无需手动管理线程池:// 传统线程池 vs 虚拟线程 public static void main(String[] args) throws Exception { // 传统线程池 try (var executor = Executors.newFixedThreadPool(100)) { IntStream.range(0, 1000).forEach(i -> { executor.submit(() -> { Thread.sleep(Duration.ofSeconds(1)); return i; }); }); } // 需手动管理线程池大小 // 虚拟线程(Java 21) try (var executor = Executors.newVirtualThreadPerTaskExecutor()) { IntStream.range(0, 10000).forEach(i -> { executor.submit(() -> { Thread.sleep(Duration.ofSeconds(1)); return i; }); }); } // 自动扩展,无需担心OOM }
Record模式(Record Patterns)
简化数据解构:// 定义Record类 record Point(int x, int y) { } // 使用Record模式解构对象 public static void printSum(Object obj) { if (obj instanceof Point(int x, int y)) { System.out.println(x + y); // 直接获取x和y } }
字符串模板(String Templates)
增强字符串拼接可读性:var name = "Alice"; var age = 30; // 传统方式 String message = "Hello, " + name + ", you are " + age + " years old."; // 字符串模板(Java 21预览特性) String messageTemplate = STR."Hello, \{name}, you are \{age} years old.";
三、面向对象编程实战:图书管理系统
需求:设计一个简单的图书管理系统,支持图书的增删改查,使用Java 21新特性优化代码。
领域模型设计
使用record
简化实体类:// Book.java public record Book(String isbn, String title, String author, boolean borrowed) { } // Library.java import java.util.ArrayList; import java.util.List; public class Library { private final List<Book> books = new ArrayList<>(); // 添加图书 public void addBook(Book book) { books.add(book); } // 查询所有未借出的图书(使用Stream API) public List<Book> findAvailableBooks() { return books.stream() .filter(book -> !book.borrowed()) .toList(); } // 借阅图书(使用Record模式) public boolean borrowBook(String isbn) { for (int i = 0; i < books.size(); i++) { var book = books.get(i); if (book.isbn().equals(isbn) && !book.borrowed()) { books.set(i, new Book(book.isbn(), book.title(), book.author(), true)); return true; } } return false; } }
控制台交互(使用字符串模板)
// Main.java import java.util.Scanner; public class Main { public static void main(String[] args) { var library = new Library(); var scanner = new Scanner(System.in); while (true) { System.out.println("\n1. 添加图书"); System.out.println("2. 查看可借图书"); System.out.println("3. 借阅图书"); System.out.println("4. 退出"); System.out.print("请选择操作:"); int choice = scanner.nextInt(); scanner.nextLine(); // 消耗换行符 switch (choice) { case 1 -> { System.out.print("ISBN: "); var isbn = scanner.nextLine(); System.out.print("书名: "); var title = scanner.nextLine(); System.out.print("作者: "); var author = scanner.nextLine(); library.addBook(new Book(isbn, title, author, false)); System.out.println(STR."图书 \{title} 已添加"); } case 2 -> { System.out.println("可借图书列表:"); library.findAvailableBooks().forEach(book -> System.out.println(STR."\{book.title()} - \{book.author()}") ); } case 3 -> { System.out.print("请输入要借阅的ISBN: "); var isbn = scanner.nextLine(); boolean success = library.borrowBook(isbn); System.out.println(success ? "借阅成功" : "借阅失败"); } case 4 -> System.exit(0); } } } }
四、现代开发工具链
使用Maven管理依赖
在pom.xml
中添加常用依赖:<dependencies> <!-- JSON处理 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.16.0</version> </dependency> <!-- 日志 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>2.0.9</version> </dependency> <!-- 单元测试 --> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <version>5.10.3</version> <scope>test</scope> </dependency> </dependencies>
编写单元测试(JUnit 5)
import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; public class LibraryTest { @Test void testAddBook() { var library = new Library(); var book = new Book("123", "Java 21 Guide", "Doubao", false); library.addBook(book); assertEquals(1, library.findAvailableBooks().size()); } @Test void testBorrowBook() { var library = new Library(); var book = new Book("123", "Java 21 Guide", "Doubao", false); library.addBook(book); assertTrue(library.borrowBook("123")); } }
推荐书籍
- 《Effective Java》第4版(Java 21更新版)
- 《Java核心技术》第12版
实战项目
- 基于Spring Boot开发REST API
- 使用JavaFX或Java Swing开发桌面应用
- 结合Docker部署Java应用
通过以上内容,你可以快速掌握Java 21的核心特性,并通过图书管理系统项目实践面向对象编程思想。建议结合官方文档和实战项目进一步深入学习!
java 入门,java 零基础,java 视频教程,2025 最新 java 教程,java 编程入门,java 学习视频,java 零基础教程,java 从入门到精通,java 入门课程,java 开发入门,java 新手教程,java 基础视频,java 入门培训,java 自学教程,java 零基础入门
代码获取方式
https://pan.quark.cn/s/14fcf913bae6