跳到内容

元数据卡

  • 前置知识:无(零基础起点)
  • 预计时间:20 分钟
  • 完成标志:能够独立用 javac 编译 Java 文件并用 java 运行,在终端看到 "Hello World" 输出

村口的木牌歪歪斜斜地钉在一棵老榕树上。"欢迎来到变量村——程序员的第一站",字迹已经开始褪色。我背着背包站在村口,老陈师傅从几步外的木屋探出头来。

"小子,来得正好。"他擦了擦手上的灰,"你面前这台终端,听你的。但是——你得先跟它打个招呼。计算机不会自动搭理任何人。"

我还没开口,他已经把一个空白文件推到我面前。

你的任务: 跟一台冰冷的机器打招呼——挥挥手是没用的,你得用它的语言说话。


① 确认开发环境就位

老陈师傅把终端推过来:"先看看 JDK 在不在。"

bash
javac --version
java --version

如何运行: 在终端分别敲这两条命令,按回车

预期输出:

javac 21.0.x
java 21.0.x

我照做。终端回了两行版本号。

"看见了吧?javac 是编译器——把你的文字翻译成中间文件。java 是运行器——启动虚拟机执行这些中间文件。"他把两根手指立在桌上,"两个工具,缺一不可。编译一次,可以运行无数次。"

JDK 是什么? Java Development Kit(JDK)是 Java 开发工具包。它里面有编译器(javac)、运行器(java)和一大堆现成的工具类。装一个 JDK,你的电脑就能编译和运行 Java 程序了。

如果命令没找到(command not found):

bash
# Ubuntu/Debian
sudo apt install openjdk-21-jdk

# macOS (Homebrew)
brew install openjdk@21

# Windows
# 去 https://jdk.java.net/21/ 下载,解压后设置 PATH 环境变量

装完再跑一次 javac --version,确认版本号出现。


② 写你的第一行代码

"坐。打开编辑器。"

我随便用 nano 开了一个空文件——对,就是那个黑底白字、看起来像八十年代的编辑器。

java
// HelloWorld.java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

如何运行:

  1. 用任何文本编辑器(nano、vim、VS Code、记事本都行)写入上面的代码
  2. 保存为 HelloWorld.java文件名必须和 class 后面的名字一致,大小写也要一样
  3. 编译:javac HelloWorld.java
  4. 运行:java HelloWorld

预期输出:

Hello World!

我敲完这几行,手还悬在键盘上,盯着屏幕看了五秒钟——就这么点?

"对,就这么点。"老陈师傅读出我的表情,"先跑跑看。"

终端上出现了 Hello World! 三个词。

"恭喜你,"他拍了拍桌子,"你已经是个程序员了。"

小贴士: 如果你的终端报错 Error: Could not find or load main class,检查你是不是运行了 java HelloWorld 而不是 java HelloWorld.classjava 命令自动找 .class 文件,不需要写后缀。


③ 这条路的关键思维

今天你做了三件事,以后无论多复杂的程序,这三个步骤永远不会变:

写 → 编 → 跑
mermaid
flowchart LR
    A[写 .java 文件] --> B[javac 编译成 .class 字节码]
    B --> C[java 启动 JVM 执行]
    C --> D[在终端看到输出]

写: 用编辑器写一个 HelloWorld.java 文件。

编: javac HelloWorld.java —— 编译器把人类可读的源码翻译成计算机能理解的中间文件(字节码/.class 文件)。

跑: java HelloWorld —— 运行器启动 Java 虚拟机(JVM),加载编译后的字节码并执行。


即兴对比:Python 和 C++ 怎么写

Python 差异

老陈瞥了一眼隔壁桌阿花的屏幕,"她那个 Python 不用过编译这关。"

Python 不需要编译这一步。你写一个 .py 文件,直接用 python hello.py 就能跑。编译器和运行器合二为一了。这让起步更快,但也失去了编译期发现错误的机会——Java 在你运行之前就能抓住很多语法错误,Python 要跑到那句才知道。

bash
# Python 写法——没有编译步骤
python hello.py

C++ 差异

老陈从柜子深处翻出一本积灰的手册,"C++ 跟你在做的事最像,但结局不一样。"

C++ 也需要编译,但编译方式不一样。Java 编成中间文件/字节码(跨平台,虚拟机执行),C++ 编成机器码(直接给 CPU 跑,不跨平台)。命令是 g++ hello.cpp -o hello 然后 ./hello。Java 你只写一次 .java 文件就能在任何有 JVM 的机器上跑;C++ 换个操作系统就得重编。

bash
# C++ 写法——需要编译和链接两步
g++ hello.cpp -o hello
./hello

旅人笔记

"Hello World!" 这个传统比很多人想象的要老。1972 年,Brian Kernighan 在 B 语言的教程里第一次用它——后来 C 语言继承了这个传统,Java 又带了进来。

每个程序员——不管用哪种语言写了几十年代码——都写过 "Hello World"。它是你的出生证明。


验收标准

  • [ ] 你能在终端运行 javac --versionjava --version,看到版本号
  • [ ] 你能写出一个 .java 文件,用 javac 编译不报错
  • [ ] 你能用 java 运行编译后的程序,并看到终端打印文字
  • [ ] 你能口述:javac 做什么,java 做什么

下一步

你跑通了你的第一个程序,看到 "Hello World" 在终端亮起来。但那段代码里每一行在说什么?public static void main(String[] args) 为什么非要写成这样?

下一步:ch01-code-explained.md —— 逐行拆解你的第一段 Java 代码。

Built with VitePress | Software Systems Atlas