3. 【Java】Hello, World!:第一行 Java 代码

3. 【Java】Hello, World!:第一行 Java 代码

摘要:本文是 Java 零基础入门系列的第二篇,手把手教你从零开始编写并运行第一个 Java 程序 “Hello, World!”。内容涵盖在 IntelliJ IDEA 中创建项目、编写代码、编译运行的全过程,并对代码进行逐行深度解读,阐述public classmain方法、System.out.println等核心概念的含义。此外,还介绍了 JDK 21 中更简洁的预览特性写法,帮助初学者在动手实践中快速建立对 Java 程序基本结构的认知。

关键词:Java 入门, Hello World, IntelliJ IDEA, JDK 21, main 方法


上一篇我们费了不少功夫,把 JDK 和 IDEA 都装好了。当时我说,这就像装修新房时通好了水电,现在我们终于可以搬进第一件家具了。

今天,我们要做的事是编程世界里最经典、最神圣、甚至带点仪式感的一步:写出并运行你的第一个 Java 程序:Hello, World!

别小看这一行简单的输出,它背后藏着一整套 Java 程序的结构逻辑。今天我们会逐字逐句地拆解它,保证你不仅知道“怎么敲”,更明白“为什么这么敲”。


1. 在 IDEA 中创建第一个项目

打开 IntelliJ IDEA,你会看到欢迎界面。点击New Project(新建项目)。

接下来会弹出一个窗口,有几个选项需要你留意:

  • Name(项目名):我们取名为HelloJava(你也可以叫别的,但尽量不用中文和空格)。
  • Location(项目存放位置):选择你电脑上一个方便找到的文件夹,比如D:\JavaProjects~/IdeaProjects
  • Language(语言):选 Java,这是显然的。
  • Build system(构建工具):这里选IntelliJ就行了,我们暂时不用 Maven 这类高级工具(以后会用到)。
  • JDK:确保这里显示的是JDK 21。如果下拉列表是空的,点击旁边的 “Add JDK” 手动选择你之前安装的 JDK 安装目录。

全部确认好后,点击Create。稍等几秒钟,IDEA 会为你创建一个崭新的项目。

在项目左侧的目录结构中,你会看到src文件夹——它是source(源代码)的缩写,我们以后所有的.java文件都会放在这里。


2. 创建第一个 Java 类

src文件夹上点击右键 →New → Java Class

在弹出的对话框中输入HelloWorld(注意:大小写要严格,HW大写)。然后敲回车。

IDEA 会自动生成一个名叫HelloWorld.java的文件,并在编辑区打开它。目前里面是空的,或者只有一行public class HelloWorld { }——这要看 IDEA 的模板设置。

接下来,手动输入下面的代码。我建议你不要复制粘贴,而是亲自敲一遍——每个字母都有意义,敲一遍能加深印象。

// 这是我们的第一个Java程序// 文件名必须与类名一致:HelloWorld.javapublicclassHelloWorld{// main方法是程序的入口,JVM会从这里开始执行publicstaticvoidmain(String[]args){// 这句话会在控制台打印出 Hello, World!System.out.println("Hello, World!");}}

⚠️ 注意:所有符号都必须是英文半角。尤其注意括号()、花括号{}、分号;和双引号"都不能用中文的。


3. 编译与运行 —— 见证奇迹的时刻

在 IDEA 里,编译和运行被集成到一个按钮里了。你只需要点击编辑器右上角的绿色小三角形 ▶(Run),或者按快捷键Shift + F10(Windows/Linux)或Control + R(macOS)或⌘ + R(macOS,如果修改了 Keymap)。

点击之后,IDEA 会自动编译HelloWorld.java,然后执行它。在窗口下方的Run面板中,你会看到一行输出:

Hello, World!

如果看到了这行字,恭喜你—— 你的第一个 Java 程序跑起来了!请允许我由衷地为你高兴。

如果出现了红色报错信息,别慌,仔细检查代码有没有拼写错误、漏掉分号、括号不匹配等问题。编译器的报错信息虽然看上去密密麻麻,但其实它会告诉你错在哪一行、什么类型,多读几遍就能看明白。


4. 逐行解读 —— 这串神秘代码到底在说什么?

现在,让我们回到代码本身。即使你刚刚成功地运行了它,但如果看不懂每一行的含义,那跟抄答案没什么区别。我们来逐行拆解。

第 1~2 行:注释
// 这是我们的第一个Java程序// 文件名必须与类名一致:HelloWorld.java

//开头的文字是单行注释。注释是写给看的,编译器会完全忽略它们。注释的作用是解释代码的意图,帮助自己和他人理解。养成写注释的习惯,是优秀程序员的标志之一。

Java 还有多行注释/* ... */和文档注释/** ... */,我们以后会用到。

第 4 行:类声明
publicclassHelloWorld{
  • public是一个访问修饰符,意思是“公开的”。它表示这个类可以被任何地方的代码访问。目前你只需要记住,我们的主类总是public
  • class是关键字,用来声明一个“类”。类是 Java 最基本的组织单位——所有 Java 代码都必须写在类里面
  • HelloWorld类名。它必须和文件名完全一致(包括大小写),这是 Java 的硬性规定。所以我们的文件名是HelloWorld.java
  • 左花括号{标志着类的主体开始,它和后面的右花括号}配对,中间包裹着这个类的所有内容。
第 6 行:main 方法 —— 程序的“入口”
publicstaticvoidmain(String[]args){

这是整个程序中最重要的一行。我们来拆解它的每一个单词:

  • public:和类一样,main方法也是公开的,因为 JVM 需要从外部调用它。
  • static:这是一个静态修饰符,意思是这个方法属于类本身,而不属于某个具体的对象。这样 JVM 在还没有创建任何对象时就能调用它。关于静态,我们以后会深入讲,现在先记住:main方法必须用static
  • void:表示这个方法没有返回值。它执行完就结束了,不会向调用者返回任何数据(JVM 也不需要它返回什么)。
  • main:这是方法名,固定就叫main。JVM 规定只能以这个名字作为程序入口。
  • (String[] args):这是方法的参数String[]表示一个字符串数组,args是参数名。这个数组用来接收从命令行传给程序的额外参数(比如java HelloWorld arg1 arg2,那么args[0]就是"arg1")。虽然我们暂时用不到,但必须写上。
  • 左花括号{表示方法体的开始。
第 8 行:输出语句
System.out.println("Hello, World!");
  • System是 Java 系统自带的一个类,代表“系统”。
  • outSystem类里面的一个静态字段,代表“标准输出流”——通俗点说就是控制台
  • printlnout对象的一个方法,全称是print line,意思是“打印一行”。
  • "Hello, World!"是我们要输出的字符串,用双引号括起来。
  • 最后的分号;—— Java 中每一条语句的末尾都必须用分号结束,不要忘
第 9~10 行:关闭花括号
}}// 第 9 行结束 main 方法体,第 10 行结束类体

每个{都必须有对应的},并且要成对匹配。在 IDEA 里,把光标放在花括号上,它会高亮显示匹配的另一半,非常方便。


5. 我们从这第一段代码中学到了什么?

别看只有短短几行,它已经涵盖了 Java 程序的骨架

  1. 所有代码都在类中class)。
  2. 程序的起点是main方法,签名必须完全正确。
  3. 语句用分号结束
  4. 花括号用来划分代码块

这个骨架,你在后面的每一篇文章里都会反复见到,直到它像你的名字一样熟悉。


6. JDK 21 的惊喜:更精简的 Hello World(预览特性)

如果你觉得上面的写法有点“啰嗦”(public static void main(String[] args)确实挺长的),那 JDK 21 给你带了一个好消息:它引入了一个预览特性(Preview Feature),允许你写出更精简的Hello World

预览特性意味着这个功能在 JDK 21 中已经可以使用,但细节在未来版本中可能还会调整,所以默认是关闭的。不过我们可以在 IDEA 中开启它。

新的写法是这样的:

// 这是JDK 21的预览特性:未命名类 + 实例main方法// 需要在编译/运行时加上 --enable-preview 参数voidmain(){System.out.println("Hello, World from JDK 21!");}

看到了吗?不需要public class XXX,不需要public static void main(String[] args),只需要一个void main()就行了!是不是清爽很多?

这个特性由两部分组成:

  • 未命名类(Unnamed Classes):当你没有写class声明时,编译器会自动为你生成一个匿名类。
  • 实例 main 方法(Instance Main Methods)main方法不再强制要求static,可以作为一个实例方法存在。

不过,在 IDEA 中要跑通这段代码,你需要做一点设置:鼠标移到main,点击Set language level to 21 (Preview) ...

或者鼠标点击 菜单 File --> Project Structure, Language Level 下拉框里选择21 (Preview) ...点击OK后运行。

你会发现输出正常显示。

💡我的建议:虽然这种新写法更简洁,但在初学阶段,我仍然推荐你使用传统的public static void main(String[] args)。因为它更通用,能让你更好地理解 Java 的完整结构。等我们熟悉之后,再玩新特性也不迟。


7. 背后发生了什么?—— 从源码到运行的过程

当我们在 IDEA 里点击“运行”时,IDEA 在背后帮我们做了两件事:

  1. 编译:调用javac HelloWorld.java,把源码编译成字节码文件HelloWorld.class
  2. 运行:调用java HelloWorld,启动 JVM,加载HelloWorld.class,然后 JVM 找到main方法并执行。

你可以自己打开终端(命令行),进入HelloWorld.java所在的目录,手动执行这两条命令,看看效果是否和 IDEA 里一样。这样做能让你更清楚地感知编译和运行是两个独立的步骤。


今天的总结

今天我们跨过了真正意义上的第一道门槛:

  • 在 IDEA 中创建了 Java 项目
  • 编写了完整的HelloWorld
  • 成功编译并运行了它
  • 逐词逐句地解读了每一行代码的含义
  • 简单了解了 JDK 21 的简化写法(预览特性)

你现在已经不是一个“只看不练”的旁观者了——你已经写出了属于自己的第一段 Java 代码,并且亲眼看着它运行出来。这个成就感,应该比看了十篇文章都来得实在。


动手试试

  1. 修改输出内容:把"Hello, World!"改成你自己的名字,比如"Hello, 张三!",再运行一次。
  2. 添加第二行输出:在println下面再写一行System.out.println("Welcome to Java!");,观察输出结果。
  3. 尝试犯个小错误:故意漏掉一个分号,看看 IDEA 会怎样提示你。然后改回来,感受一下编译器的“报错”其实是在帮你。

下篇文章,我们要往底层走一步,聊聊JVM 的秘密—— 为什么 Java 能跨平台?字节码到底是什么?敬请期待。

我们下一篇见。😃

📌 获取本系列示例代码请访问 GitCode。