IT探险家 · Java 官方教程深度解读
你以为 Java 入门就是写个 Hello World?太天真了。
我带过不少刚转 Java 的同学,发现大家在「入门阶段」踩的坑出奇一致。今天把这 5 个最经典的陷阱整理出来,每个都附上「错误写法 → 正确写法 → 为什么」,看完少走半年弯路。
坑 1:分不清 JDK、JRE、JVM,面试直接翻车
踩坑现场:
面试官问「JDK 和 JRE 什么区别?」,答:「呃……JDK 就是 Java 开发工具?JRE 就是运行环境?」——说了跟没说一样。
正确理解:
这三个是层层包含的关系:
JDK = JRE + 开发工具(javac 编译器、jdb 调试器、javadoc 文档工具等)
JRE = JVM + 核心类库(rt.jar 等)
JVM = 字节码执行引擎
打个比方:JVM 是发动机,JRE 是能跑的整车,JDK 是整车 + 修车工具箱。
关键变化:从 Java 11 开始,Oracle 不再单独提供 JRE 下载。你装 JDK 就全有了,不用纠结装哪个。
面试加分回答:「JVM 负责执行字节码,是跨平台的核心;JRE 在 JVM 基础上加了标准类库,是运行 Java 程序的最小环境;JDK 在 JRE 基础上加了编译器等开发工具,是开发者必装的。另外 Java 11 之后就没有独立 JRE 了。」
坑 2:以为 .java 文件可以直接运行
踩坑现场:
# 新手直觉操作
java HelloWorld.java # Java 11+ 可以,但 Java 8 会报错!
这里的陷阱是:Java 的编译运行是两步走的——
.java 源文件 → javac 编译 → .class 字节码 → java 运行
标准流程:
# 第一步:编译
javac HelloWorld.java # 生成 HelloWorld.class
# 第二步:运行(注意没有 .class 后缀)
java HelloWorld # JVM 加载并执行字节码
但是,Java 11 引入了直接运行单文件源码的能力:
java HelloWorld.java # Java 11+ 才支持,底层仍然是编译+运行
这只是语法糖,底层依然经历了编译过程,只是帮你省了手动 javac 那一步。生产环境不会这么用,但学习时很方便。
避坑指南:初学阶段建议老老实实 javac + java 两步走,这样你能清楚看到 .class 文件的生成,理解编译和运行是两个独立阶段。
坑 3:文件名和类名不一致,编译直接报错
踩坑现场:
文件名叫 hello.java,里面写的是:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello!");
}
}
编译:
javac hello.java
# 错误: 类 HelloWorld 是公共的, 应在名为 HelloWorld.java 的文件中声明
规则:如果类声明为 public,那么文件名必须和类名完全一致(包括大小写)。HelloWorld 类必须放在 HelloWorld.java 里。
延伸知识:一个 .java 文件可以有多个类,但最多只能有一个 public 类,且 public 类名必须与文件名一致。实际项目中,一个文件一个类是基本规范。
坑 4:把 Java 的「跨平台」理解错了
踩坑现场:
「Java 跨平台,所以我在 Windows 上编译的程序,拷到 Linux 上直接就能跑?」
答案是:对的——但有前提。
跨平台的不是你的源代码,也不是编译器,而是 字节码 + JVM 的配合:
- 你的
.java文件经过javac编译,生成平台无关的.class字节码 .class文件可以拷到任何有 JVM 的机器上运行- 不同操作系统有不同版本的 JVM,JVM 负责把字节码翻译成该系统能执行的本机指令
关键点:跨平台的是字节码,不是 JVM。每个操作系统需要安装对应版本的 JVM。所以口号是 "Write Once, Run Anywhere",前提是 "Anywhere 得先装 JVM"。
常见误解:
- ❌ 「Java 不需要编译」→ 需要,编译成字节码
- ❌ 「Java 是解释型语言」→ 不完全是,现代 JVM 有 JIT 即时编译,热点代码会被编译为本机代码
- ❌ 「跨平台 = 性能差」→ JIT 优化后性能接近 C++,某些场景甚至更快(运行时优化)
坑 5:搞不清 Java 版本,该装哪个?
踩坑现场:
打开 Oracle 官网,Java 8、Java 11、Java 17、Java 21、Java 25……选哪个?装了 Java 21 结果公司项目跑不起来?
版本选择原则:
Java 采用每 6 个月发一个新版本的节奏,但不是每个版本都值得用。认准 LTS(Long-Term Support,长期支持) 版本:
LTS 版本线:8 → 11 → 17 → 21 → 25
- 个人学习:直接装最新 LTS(目前是 21,25 即将发布)
- 公司项目:看项目要求,很多老项目还在 Java 8
- 新项目:至少 Java 17,推荐 Java 21
非 LTS 版本(如 Java 22、23、24)只有 6 个月支持期,生产环境别用。
实用建议:学习时装 Java 21,面试时 Java 8 的知识也要懂(很多面试题基于 Java 8),工作后跟着项目走。
总结:入门检查清单
| 检查项 | 你搞清楚了吗? |
|---|---|
| JDK vs JRE vs JVM 的包含关系 | ☐ |
| .java → javac → .class → java 的两步流程 | ☐ |
| public 类名必须与文件名一致 | ☐ |
| 跨平台靠的是字节码 + JVM,不是源代码 | ☐ |
| LTS 版本线:8 → 11 → 17 → 21 → 25 | ☐ |
全部打勾,你的 Java 入门才算真正完成。
关注公众号「IT探险家」,回复「Java入门」获取完整演示代码 + 速查手册。更多面试深度解析和源码分析,欢迎加入 知识星球IT探险家·进阶圈。