03 第一个程序——Hello World
·
目录
🚀 03 第一个程序——Hello World
更新日期:2026年5月
版权声明:本文为原创文章,转载请注明出处。© 2026 Java入门到精通系列
一、Hello World的由来
“Hello, World!” 程序是每个程序员学习新语言时编写的第一个程序。这个传统起源于1978年 Brian Kernighan 和 Dennis Ritchie 合著的《The C Programming Language》一书。
几乎所有的编程入门教程都以此作为起点,它可以帮助你:
- ✅ 验证开发环境是否正确配置
- ✅ 了解语言的基本语法结构
- ✅ 获得第一个成功的成就感
二、编写第一个Java程序
2.1 使用记事本编写(了解原理)
第一步:创建文件
新建一个文件,命名为 HelloWorld.java。
⚠️ 重要:文件名必须与类名完全一致,包括大小写!
第二步:编写代码
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
第三步:编译运行
# 打开终端/命令提示符,进入文件所在目录
# 编译(将 .java 编译为 .class 字节码文件)
javac HelloWorld.java
# 运行(注意:不加 .class 后缀)
java HelloWorld
# 输出:
# Hello, World!
2.2 使用IDEA编写(推荐方式)
1. 打开 IntelliJ IDEA
2. File → New → Project → Java → 选择JDK 21
3. 项目名:HelloWorldDemo
4. 在 src 目录上右键 → New → Java Class
5. 输入类名:HelloWorld
6. 输入代码并运行(点击绿色三角或Shift+F10)
三、逐行解析代码
public class HelloWorld { // 第1行:类声明
public static void main(String[] args) { // 第2行:主方法
System.out.println("Hello, World!"); // 第3行:输出语句
} // 第4行:主方法结束
} // 第5行:类结束
3.1 逐行详解
| 行号 | 代码 | 说明 |
|---|---|---|
| 1 | public class HelloWorld |
声明一个公开的类,类名为HelloWorld |
| 1 | { |
类的开始 |
| 2 | public static void main(String[] args) |
主方法,程序的入口点 |
| 3 | System.out.println("Hello, World!") |
向控制台输出一行文字 |
| 4 | } |
主方法结束 |
| 5 | } |
类结束 |
3.2 关键字说明
| 关键字 | 含义 | 说明 |
|---|---|---|
public |
访问修饰符 | 表示公开的,任何地方都能访问 |
class |
类 | 声明一个类,Java程序的基本单位 |
static |
静态 | 表示该方法属于类而非实例 |
void |
无返回值 | 表示main方法不返回任何值 |
String[] |
字符串数组 | 命令行参数的类型 |
四、main方法深度解析
main 方法是Java程序的入口点,JVM从这里开始执行代码。
4.1 main方法的完整签名
public static void main(String[] args)
逐个关键字分析:
public // 1. 公开访问权限,JVM需要调用它
static // 2. 静态方法,无需创建对象即可调用
void // 3. 无返回值,main不需要向JVM返回结果
main // 4. 方法名,JVM固定识别的入口名
String[] // 5. 参数类型,字符串数组
args // 6. 参数名(可以改成其他名字,但约定俗成用args)
4.2 main方法的等价写法
以下写法都是合法的main方法声明:
// 标准写法
public static void main(String[] args) { }
// args可以换成其他名字
public static void main(String[] arguments) { }
// 可变参数写法(Java 5+)
public static void main(String... args) { }
// 以下写法是不合法的 ❌
// static public void main(String[] args) { } // 修饰符顺序不规范(但编译能过)
// public void main(String[] args) { } // 缺少static
// public static void main(String args) { } // 缺少[]
4.3 命令行参数
public class CommandLineArgs {
public static void main(String[] args) {
// args数组包含命令行传入的参数
System.out.println("参数个数:" + args.length);
for (int i = 0; i < args.length; i++) {
System.out.println("参数" + i + ":" + args[i]);
}
}
}
运行方式:
javac CommandLineArgs.java
java CommandLineArgs Hello Java 2026
# 输出:
# 参数个数:3
# 参数0:Hello
# 参数1:Java
# 参数2:2026
4.4 main方法的本质
┌──────────────────────────────────────────────┐
│ JVM │
│ │
│ 1. 加载 HelloWorld.class │
│ 2. 查找 public static void main(String[]) │
│ 3. 调用 main 方法 │
│ 4. 执行 main 方法中的代码 │
│ 5. main 方法执行完毕,程序结束 │
│ │
└──────────────────────────────────────────────┘
五、编译与运行流程
5.1 Java程序的生命周期
源代码(.java) → 编译(javac) → 字节码(.class) → 运行(java) → 结果
详细流程:
编译期 运行期
┌──────────────┐ ┌──────────────────┐
│ │ │ │
HelloWorld.java → javac → HelloWorld.class → java → JVM加载执行 → 输出结果
│ │ │ │
│ 词法分析 │ │ 类加载器加载 │
│ 语法分析 │ │ 字节码验证 │
│ 语义分析 │ │ 解释/JIT编译 │
│ 生成字节码 │ │ 执行代码 │
└──────────────┘ └──────────────────┘
5.2 编译详解
# 编译命令
javac HelloWorld.java
# 编译选项
javac -encoding UTF-8 HelloWorld.java # 指定编码
javac -d out HelloWorld.java # 指定输出目录
javac -verbose HelloWorld.java # 显示详细信息
# 编译成功后,会生成 HelloWorld.class 文件
# 这个文件包含字节码,是平台无关的
5.3 运行详解
# 运行命令
java HelloWorld
# 注意:运行时不加 .class 后缀!
# 运行时的内部过程:
# 1. JVM启动
# 2. 类加载器(ClassLoader)加载HelloWorld.class
# 3. 字节码验证器验证字节码的合法性
# 4. 执行引擎(解释器/JIT编译器)执行字节码
# 5. 找到main方法并开始执行
5.4 反编译查看字节码
# 使用javap查看字节码
javap -c HelloWorld.class
# 输出(简化版):
# Compiled from "HelloWorld.java"
# public class HelloWorld {
# public HelloWorld();
# Code:
# 0: aload_0
# 1: invokespecial #1
# 4: return
#
# public static void main(java.lang.String[]);
# Code:
# 0: getstatic #2 // Field java/lang/System.out
# 3: ldc #3 // String Hello, World!
# 5: invokevirtual #4 // Method PrintStream.println
# 8: return
# }
六、在IDEA中运行
6.1 创建项目
1. File → New → Project
2. 选择 "Java"
3. 选择 JDK 21
4. 项目名:HelloWorldDemo
5. Build system:IntelliJ(初学者推荐)
6. 点击 "Create"
6.2 创建类并运行
1. 在 src 目录上右键 → New → Java Class
2. 类名输入:HelloWorld
3. 输入代码:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
4. 点击 main 方法左侧的绿色三角 ▶
5. 选择 "Run 'HelloWorld.main()'"
6. 在底部控制台查看输出
6.3 IDEA快捷操作
| 操作 | 快捷键(Mac) | 快捷键(Win/Linux) |
|---|---|---|
| 运行 | Ctrl + R | Shift + F10 |
| 调试 | Ctrl + D | Shift + F9 |
| 代码补全 | Ctrl + Space | Ctrl + Space |
| 格式化 | Cmd + Option + L | Ctrl + Alt + L |
| 生成代码 | Cmd + N | Alt + Insert |
| 快速修复 | Option + Enter | Alt + Enter |
七、常见错误与解决方案
7.1 编译错误
错误1:找不到文件
javac HelloWorld.java
# 错误:javac: file not found: HelloWorld.java
# 解决:
# 1. 检查文件名是否正确(大小写敏感)
# 2. 检查当前目录是否正确
# 3. 使用 cd 命令切换到文件所在目录
错误2:类名与文件名不一致
# 文件名:Hello.java
# 代码:public class HelloWorld { ... }
# 错误:HelloWorld.java 中的类 HelloWorld 必须在其同名文件中声明
# 解决:让文件名与类名保持一致
# 方式一:改文件名为 HelloWorld.java
# 方式二:改类名为 Hello
错误3:缺少分号
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!") // 缺少分号!
}
}
// 错误:需要 ';'
错误4:中英文标点混淆
// ❌ 错误:使用了中文分号
System.out.println("Hello");
// ✅ 正确:使用英文分号
System.out.println("Hello");
7.2 运行错误
错误5:找不到主类
java Hello World
# 错误:找不到或无法加载主类 Hello World
# 原因:类名中间有空格被当成了两个参数
# 解决:java HelloWorld
错误6:在错误目录运行
# 在错误的目录下运行
java HelloWorld
# 错误:找不到或无法加载主类 HelloWorld
# 解决:切换到 .class 文件所在目录
cd /path/to/your/class/files
java HelloWorld
7.3 常见错误汇总表
| 错误类型 | 错误信息 | 解决方案 |
|---|---|---|
| 文件名错误 | file not found |
检查文件名和路径 |
| 类名不匹配 | 类必须在同名文件中 |
文件名与类名保持一致 |
| 缺少分号 | 需要';' |
在语句末尾添加英文分号 |
| 中文符号 | 非法字符 |
使用英文标点符号 |
| 大括号不匹配 | 解析时已到达文件结尾 |
检查 {} 是否配对 |
| 找不到主类 | 找不到或无法加载主类 |
检查类名和classpath |
| 版本不兼容 | UnsupportedClassVersionError |
编译和运行使用相同JDK版本 |
7.4 编码错误问题
# 如果代码中有中文注释,可能遇到编码错误
# 错误:编码 GBK 的不可映射字符
# 解决:指定UTF-8编码
javac -encoding UTF-8 HelloWorld.java
八、进阶:改进你的Hello World
8.1 带有变量的Hello World
public class HelloWorldWithVariables {
public static void main(String[] args) {
// 声明变量
String greeting = "Hello";
String target = "World";
int year = 2026;
// 字符串拼接
System.out.println(greeting + ", " + target + "!");
// 格式化输出
System.out.println("欢迎来到Java世界,现在是" + year + "年!");
// 多行输出
System.out.println("==================");
System.out.println("| Hello World! |");
System.out.println("| Java is Cool! |");
System.out.println("==================");
}
}
输出:
Hello, World!
欢迎来到Java世界,现在是2026年!
==================
| Hello World! |
| Java is Cool! |
==================
8.2 使用用户输入
import java.util.Scanner;
public class InteractiveHello {
public static void main(String[] args) {
// 创建Scanner对象用于读取用户输入
Scanner scanner = new Scanner(System.in);
System.out.print("请输入你的名字:");
String name = scanner.nextLine();
System.out.println("你好," + name + "!欢迎学习Java!");
System.out.println("当前时间:" + java.time.LocalDateTime.now());
scanner.close();
}
}
8.3 使用方法封装
public class HelloWithMethods {
public static void main(String[] args) {
// 调用自定义方法
sayHello("World");
sayHello("Java");
sayHello("开发者");
// 带返回值的方法
String message = createGreeting("World");
System.out.println(message);
}
// 自定义方法:无返回值
public static void sayHello(String name) {
System.out.println("Hello, " + name + "!");
}
// 自定义方法:有返回值
public static String createGreeting(String name) {
return "Hello, " + name + "! Welcome to Java!";
}
}
九、Java程序的基本结构
9.1 文件结构
// 1. package语句(可选,表示包/目录)
package com.example;
// 2. import语句(可选,导入其他类)
import java.util.Scanner;
import java.time.LocalDateTime;
// 3. 类声明(必须,一个文件通常一个public类)
public class MyProgram {
// 4. 成员变量(可选)
private String name;
private int age;
// 5. 构造方法(可选)
public MyProgram(String name, int age) {
this.name = name;
this.age = age;
}
// 6. 主方法(程序入口)
public static void main(String[] args) {
// 程序从这里开始执行
System.out.println("程序开始运行!");
MyProgram program = new MyProgram("Java", 30);
program.greet();
}
// 7. 自定义方法(可选)
public void greet() {
System.out.println("Hello, I'm " + name + ", " + age + " years old.");
}
}
9.2 命名规则
| 元素 | 命名规则 | 示例 |
|---|---|---|
| 类名 | 大驼峰(PascalCase) | HelloWorld, StudentInfo |
| 方法名 | 小驼峰(camelCase) | sayHello, getAge |
| 变量名 | 小驼峰(camelCase) | studentName, maxAge |
| 常量名 | 全大写下划线 | MAX_VALUE, PI |
| 包名 | 全小写 | com.example.demo |
9.3 代码风格
// ✅ 好的代码风格
public class GoodStyle {
private static final int MAX_COUNT = 100;
public static void main(String[] args) {
String userName = "Java Learner";
int score = 95;
if (score >= 60) {
System.out.println(userName + " 通过了考试!");
} else {
System.out.println(userName + " 需要继续努力!");
}
}
}
// ❌ 不好的代码风格
public class badstyle {
private static final int max_count = 100; // 常量应用全大写
public static void main(String[] args) {
String user_name = "Java Learner"; // 变量应用小驼峰
int s=95; // 缺少空格,变量名不清晰
if(s>=60){ // 缺少空格
System.out.println(user_name+"通过了考试!");
}
}
}
十、总结与预告
✅ 本篇总结
- ✅ 编写了第一个Java程序
Hello World - ✅ 逐行解析了代码中每个关键字的含义
- ✅ 深入理解了
main方法的作用和结构 - ✅ 了解了Java程序的编译和运行流程
- ✅ 学会了在IDEA中创建和运行项目
- ✅ 掌握了常见错误的排查方法
- ✅ 了解了Java程序的基本结构和命名规范
💬 互动问题
- 你在运行Hello World时遇到了什么错误?
public static void main(String[] args)中每个关键字的作用是什么?.java文件和.class文件有什么区别?
📖 下篇预告
第04篇:变量与数据类型,我们将学习:
- 什么是变量?如何声明和初始化变量
- Java的八大基本数据类型
- 类型转换(自动和强制)
- 变量的作用域和命名规范
📚 参考资料
📝 系列目录:Java入门到精通系列 | 上一篇:02-环境搭建JDK安装与配置 | 下一篇:04-变量与数据类型
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)