☕ Java 环境与第一个程序
JDK/JRE/JVM · 环境安装 · HelloWorld 逐行讲解 · 常见报错解决
1. JDK、JRE、JVM 到底有什么区别?(面试必问)
三个都是 Java 的"运行环境",是包含关系(俄罗斯套娃):
- JDK(Java 开发工具包):最大的那个。= JRE + 开发工具(javac 编译器、java 运行器、javap 反汇编等)——写代码的人需要它
- JRE(Java 运行环境):= JVM + 核心类库(String、集合等现成代码)——只跑程序的人需要它
- JVM(Java 虚拟机):最小的核心——真正"执行 Java 程序"的虚拟机,负责把字节码翻译成机器指令
🍳 类比——开餐厅:
JVM = 厨师本人(负责做菜);核心类库 = 现成调料(不用自己磨);
JRE = 厨房(厨师 + 调料,能出菜);JDK = 厨房 + 菜谱写作工具(能开发新菜)。
JRE = 厨房(厨师 + 调料,能出菜);JDK = 厨房 + 菜谱写作工具(能开发新菜)。
Java 程序运行全过程
// ① 写代码(.java 文件)
Hello.java
// ② 编译(javac 工具,JDK 提供)
javac Hello.java → 生成 Hello.class(字节码)
// ③ 运行(java 命令 + JVM 执行字节码)
java Hello → JVM 逐条执行 → 输出结果
🎯 背诵版
- JDK ⊃ JRE ⊃ JVM(包含关系)
- javac 编译 .java → .class(字节码);java + JVM 执行 .class
- 跨平台原理:不同系统装不同 JVM,字节码不变——"一次编译,到处运行"
- JDK 版本:现在主流 JDK 8 / JDK 11 / JDK 17(LTS 长期支持版),学习装 17 即可
2. 怎么安装 Java 环境?(Windows 手把手)
- 下载 JDK:官网(oracle.com/java)或国内镜像,选 17 LTS 版,装 Windows x64 安装包(.exe)
- 安装:一路下一步(默认装到 C:\Program Files\Java\jdk-17)
- 验证:打开 CMD(Win+R 输入 cmd),敲
java -version和javac -version,能看到版本号就成功了 - 配置 IDE(强烈推荐):下载 IntelliJ IDEA(社区版免费)→ 新建项目选 Java → 选 JDK 路径 → 自动帮你管理编译运行
验证命令
> java -version
java version "17.0.10" 2024-01-16 LTS
Java(TM) SE Runtime Environment (build 17.0.10+11)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.10+11, mixed mode, sharing)
> javac -version
javac 17.0.10
⚠️ 常见问题
- "java 不是内部或外部命令" → 没装好或 PATH 没配(IDEA 一般自动处理,新手直接用 IDEA 最省事)
- 装了多个 JDK 版本混乱 → 卸载重装一个,或用 IDEA 的项目 JDK 设置指定
- 学习建议:先用 IDEA 写代码,别纠结命令行——命令行的意义后面学部署时自然懂
3. 第一个程序 HelloWorld,每一行是什么意思?
Hello.java —— 逐行注释版
// 第 1 行:public class 声明一个类,名字必须和文件名一致(Hello)
public class Hello {
// 第 3 行:main 方法是程序的入口,程序从这里开始执行(固定写法,先背下来)
public static void main(String[] args) {
// 第 4 行:打印一行文字到屏幕
System.out.println("Hello World!");
}
}
// 运行结果:
Hello World!
逐行拆解:
public class Hello:定义一个"类"。Java 规定所有代码必须放在类里。public = 公开的;类名 Hello 必须与文件名 Hello.java 一致public static void main(String[] args):程序入口。先记住"这句话是入口",每个参数含义后面陆续学:public=公开、static=静态、void=无返回值、main=方法名、String[] args=命令行参数System.out.println("..."):输出。System=系统类、out=输出流、println=打印一行(ln = line 换行)。这句是新手第一个"命令"// 注释:给人类看的说明,计算机忽略它。写注释是好习惯!{}:花括号表示代码块的开始和结束,成对出现;:分号表示一条语句的结束(中文输入法的分号不行!必须是英文 ;)
🍳 类比:Hello 类 = 一间"菜谱房";main 方法 = 房里的"入口门";println = 门口的"广播喇叭"(把内容喊出来)。程序运行时:进门(main)→ 按顺序执行 → 走到喇叭喊出 Hello World → 结束。
🎯 新手最容易犯的错
- 分号写成中文";" → 编译报错,全部换成英文 ;
- 类名和文件名不一致 → Hello.java 里必须 public class Hello
- 大括号不配对 → 数一数每个 { 都有对应的 }
- 字符串没写引号 → "Hello" 双引号必须是英文的
- 报错不可怕:编译器会告诉你第几行错——先看错误信息,再上网搜,这是程序员的基本功
4. 新手最常见的 5 个报错及解决
| 报错 | 原因 | 解决 |
|---|---|---|
| class Hello is public, should be declared in a file named Hello.java | 类名和文件名不一致 | 改名保持一致 |
| ';' expected(期望分号) | 语句末尾缺分号/中文分号 | 补英文分号 |
| reached end of file while parsing(意外结束) | 大括号不配对 | 检查 {} 成对 |
| cannot find symbol(找不到符号) | 拼写错误/大小写错 | 检查拼写(System 不是 system) |
| Error: Could not find or load main class | 运行命令的类名写错/没编译 | 先 javac 再 java,名字一致 |
✍️ 动手任务(今天必须完成)
- 1. 装好 JDK17 + IDEA
- 2. 新建项目,写 HelloWorld 并成功运行
- 3. 故意改错(删分号、改类名),看报错长什么样,再改回来——提前见一见报错,以后就不怕了
- 4. 用 println 分别输出:你的名字、1+1 的结果、一段自我介绍(3 行)