创建日期:2026-09-08 | 最近更新:2026-09-08 本手册按 JDK 11(本机实测可跑)为主线编写;涉及 17/21+ 才有的新特性会单独标注「需更高 JDK」。
Java 复习手册 0:认识 Java,先把「怎么跑起来」刻进脑子
这是给「学过几次但总记不住」的你的速记手册。每篇都很短,只留「再忘就回来翻」的东西。别背,跑。
1. Java 到底是怎么运行的
一句话:Java 先把 .java 源码编译成 .class(字节码),再由 JVM 逐行解释/即时编译执行。
Hello.java --(javac 编译)--> Hello.class --(java 运行)--> JVM 执行,跨平台
- JDK:写 Java 的人装的整套(含编译器
javac+ 运行时 JRE); - JVM:执行字节码的「虚拟机」——所以同一份
.class能在 Windows/macOS/Linux 跑; - 版本:主流长期支持版是 8 / 11 / 17 / 21。别追新,项目说几就用几;本手册按 11 写。
2. 你的第一个程序(三行规则)
Java 规定:文件名必须和 public 类同名,程序入口长这样(几乎每个文件都要抄):
// Hello.java
public class Hello {
public static void main(String[] args) {
System.out.println("你好,Java");
}
}
跑三步(或 IDE 里点运行按钮):
javac Hello.java # ① 编译 → 生成 Hello.class
java Hello # ② 运行(不带 .class 后缀)
# 输出:你好,Java
最容易忘的四件事(写错 90% 都是这四条):
- 类名
Hello与文件名Hello.java完全一致(大小写敏感); main签名是死的:public static void main(String[] args),一个都不能少;- 每条语句以 分号
;结尾; - 字符串用双引号
"你好"(单引号是字符,见下篇)。
3. package 与 import:Java 的「文件夹 + 引用」
package com.example.demo;:声明这个类属于哪个包(类似文件路径)。包名习惯反写域名。import java.util.List;:要用别包的类就先 import(类似「引入」)。java.lang下的类不用 import(如String、System)。- 目录结构要跟 package 对应:
com/example/demo/Hello.java。
package com.example.demo; // 放第一行(注释前可空)
import java.util.ArrayList; // 引入 ArrayList
public class Hello {
public static void main(String[] args) {
var list = new ArrayList<String>(); // 见下篇「类型推断」
}
}
var(JDK 10+):让编译器帮你猜类型,但只是「少打字」,类型仍然有。别到处用,可读性第一。
4. 装环境(你有两种路子)
# 路子 A:sdkman(推荐,方便切版本)
curl -s "https://get.sdkman.io" | bash
sdk install java 11.0.24-tem # 安装某个 JDK
sdk use java 11.0.24-tem # 当前 shell 用它
# 路子 B:macOS 用 Homebrew
brew install --cask temurin@11 # 或 temurin@21
验证:java -version 与 javac -version 都出来就对了。
5. 写起来舒服的姿势
- 小练习:文本编辑器 + 命令行
javac/java够了; - 认真学/做项目:装 IntelliJ IDEA(社区版免费)——新建工程、点运行、断点调试,省掉所有命令行痛苦;
- IDEA 里右键
Run之前,先确认右下角选的 Project SDK 是你要的 JDK。
6. 怎么用这本手册
每篇结构都一样:核心概念 → 代码示例 → 「最容易忘」→ 动手 3 分钟 → 自测 5 题。
- 今天先做到:能自己打出 HelloWorld 并跑通;
- 下一篇:基础语法与流程控制——变量、类型、运算符、if/for/while。
自测
.java和.class分别是什么阶段产生的?main方法签名必须怎么写?- 文件名和
public class名不一致会怎样? - package 声明的意义是什么?
- JVM 存在的意义是什么?