第一个 Java 程序
概述
学 Java 的第一步是亲手写一个能编译、能运行的程序。本文带你用文本编辑器 + 命令行完成:编写源码、用 javac 编译、用 java 运行,并理解程序入口 public static void main(String[] args) 的含义。掌握这些后,再使用 IDE 会更容易理解其背后在做什么。
前置条件
请先完成 JDK 安装与环境变量 的配置,确保命令行中 javac 和 java 可用。
基本步骤概览
- 编写:在一个
.java文件中写类与main方法。 - 保存:文件名必须与公共类名一致(区分大小写)。
- 编译:用
javac 文件名.java得到.class字节码。 - 运行:用
java 类名(不要加.class)执行程序。
编写你的第一个程序
最小可运行示例
在任意目录下新建一个文本文件,命名为 Hello.java(类名为 Hello,故文件名必须是 Hello.java),内容如下:
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, Java!");
}
}说明:
public class Hello:定义一个名为Hello的公共类;一个.java文件中最多只能有一个public类,且文件名必须与该类名一致。public static void main(String[] args):JVM 约定的程序入口方法,没有它就无法用java命令直接运行该类。System.out.println(...):向控制台输出一行字符串并换行。
提示
若类不是 public,类名可与文件名不一致,但一个源文件里仍建议只放一个类,且文件名与类名一致,便于维护。
编译与运行
在终端或命令提示符中,进入 Hello.java 所在目录,执行:
# 编译:生成 Hello.class
javac Hello.java若无报错,当前目录下会多出 Hello.class。再执行:
# 运行:指定类名,不要写 .class
java Hello预期输出:
Hello, Java!注意
运行命令是 java Hello,不是 java Hello.class。JVM 需要的是类名,而不是文件名。
理解程序入口:main 方法
JVM 启动时会查找「具备固定签名的入口方法」,即:
public static void main(String[] args)| 修饰符/类型 | 含义简述 |
|---|---|
public | 方法对外可见,JVM 才能调用。 |
static | 类方法,不依赖对象即可执行,程序启动时还没有任何对象。 |
void | 无返回值。 |
String[] args | 命令行参数数组;例如执行 java Hello a b,则 args[0] 为 "a",args[1] 为 "b"。 |
因此:每个可被 java 类名 直接运行的类,都必须有一个且仅有一个符合上述签名的 main 方法。
示例:使用命令行参数
下面这段程序会打印「你好」和传入的第一个参数(若存在):
public class Greet {
public static void main(String[] args) {
System.out.println("你好!");
if (args.length > 0) {
System.out.println("第一个参数: " + args[0]);
}
}
}保存为 Greet.java,编译并运行:
javac Greet.java
java Greet
# 输出:你好!
java Greet 张三
# 输出:你好!
# 第一个参数: 张三常见问题与注意事项
文件名与类名不一致
若类声明为 public class Hello,源文件必须命名为 Hello.java(大小写一致)。否则会报错:
类 Hello 是公共的,应在名为 Hello.java 的文件中声明编码与乱码
若源码或输出含中文,建议将 .java 文件保存为 UTF-8 编码;编译时若遇乱码,可指定编码:
javac -encoding UTF-8 Hello.java在错误目录下执行命令
javac 和 java 默认针对当前工作目录。若在错误目录执行 javac Hello.java,会提示「找不到文件」;若在错误目录执行 java Hello,会提示「找不到或无法加载主类」。解决方式:先 cd 到 Hello.java 所在目录再执行命令。
包名与直接运行
若类在包中,例如:
package com.example;
public class Hello {
public static void main(String[] args) {
System.out.println("Hello!");
}
}则需把 Hello.java 放在 com/example/ 目录下,编译时在项目根目录执行:
javac com/example/Hello.java
java com.example.Hello提示
初学阶段可先不写 package,把类放在「默认包」中,便于在任意目录下直接 javac、java。熟悉后再按包结构组织代码。
小结
- 一个可运行的 Java 程序需要:公共类 +
public static void main(String[] args)。 - 源文件命名:文件名 = 公共类名 +
.java。 - 两步命令:
javac 文件名.java编译,java 类名运行(不要写.class)。 - 理解
main的签名与args的含义,有助于后续使用 IDE 和理解「运行配置」。
下一步可学习 IDE 选择与使用,用 IDE 管理项目、运行与调试,会更高效。