Java HelloWorld程序需先编译为.class字节码再由JVM执行:javac编译检查语法并生成平台无关字节码,java命令加载、链接、初始化后调用main方法输出结果。

写一个 Java HelloWorld 程序很简单,但真正理解它为什么能运行、每一步在做什么,才是掌握 Java 入门的关键。
Java HelloWorld 的标准写法
Java 是面向对象语言,每个可运行的程序必须定义在一个类中,且主方法(main)是 JVM 启动时的唯一入口。代码必须严格遵循语法规则,包括大小写、分号、花括号匹配等。
新建一个文本文件,命名为 HelloWorld.java,内容如下:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
注意三点:
立即学习“Java免费学习笔记(深入)”;
- 文件名必须与 public class 的类名完全一致(包括大小写),否则编译失败
-
main 方法签名不能改:必须是
public static void main(String[] args) - System.out.println() 是标准输出语句,括号里字符串要用英文双引号包裹
编译:把 .java 变成 .class
Java 源码不能直接执行,必须先由 javac 编译器翻译成字节码(.class 文件)。这个过程检查语法、类型、类结构等,不通过就报错,不会生成 .class 文件。
在命令行中执行:
javac HelloWorld.java
成功后,当前目录会生成 HelloWorld.class —— 这是 JVM 能识别的中间格式,与操作系统和 CPU 架构无关。
常见错误提示:
-
error: class HelloWorld is public, should be declared in a file named HelloWorld.java→ 类名和文件名不一致 -
error: cannot find symbol→ 拼写错误,比如写成System.out.printlnn -
error: ';' expected→ 忘了写分号或括号没配对
运行:JVM 加载并执行字节码
编译成功后,用 java 命令启动 JVM,加载 .class 文件并执行其中的 main 方法:
java HelloWorld
注意:不要加 .class 后缀,JVM 会自动查找同名的类文件。JVM 会做三件事:
- 加载:从磁盘读取 HelloWorld.class,校验字节码合法性
- 链接:解析类之间的引用(如 System 类),分配内存空间
- 初始化:执行 static 代码块,然后调用 main 方法
如果看到 Error: Could not find or load main class HelloWorld,通常是路径不对、类名拼错,或当前目录没有 HelloWorld.class。
为什么需要两步:编译 + 运行?
这是 Java “一次编写,到处运行” 的核心设计:
- 编译阶段(javac)只依赖源码,产出平台无关的字节码
- 运行阶段(java)依赖对应平台的 JVM,它把字节码动态翻译成该机器能执行的指令(解释执行或 JIT 编译)
- 所以同一份 HelloWorld.class,可以在 Windows、Linux、macOS 上直接运行,无需重新编译
这不同于 C/C++ 的“编译即生成本地机器码”,也不同于 Python/JavaScript 的纯解释执行——Java 走的是中间路线:先编译为通用字节码,再由虚拟机适配不同环境。


















