第一个 Java 程序

要点

源码先被编译为字节码,再由 JVM 执行。main 是程序入口,类名、文件名与包路径共同影响工具如何找到入口。

旧回顾:Hello World 的三次进化

写法一:经典写法(Java 1.0 至今有效)

下面是本页的基线程序。它只使用 JDK 21 也支持的语法,因此可用来区分“经典编译运行闭环已通”与后文需要 JDK 25 的紧凑源文件。

// Hello.java
public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello, Java!");
    }
}
javac Hello.java   # 生成 Hello.class
java Hello         # 运行

要点回顾:文件名必须与 public 类名一致;JVM 入口是 public static void main(String[] args)。本例的可观察结果固定为 Hello, Java!;修改源码后必须重新执行 javac Hello.java,否则 java Hello 仍会运行先前生成的 Hello.class。

写法二:单文件直接运行(Java 11+)

java Hello.java    # 不再需要先执行 javac

适合小脚本与练手场景;注意它不会在磁盘生成 .class 文件。

写法三:紧凑源文件与简化 main(Java 25+)

// Hello.java —— Java 25 紧凑源文件写法
void main() {
    IO.println("Hello, modern Java!");
}
java Hello.java    # 直接运行
  • 不再强制类声明,实例方法 main 即可作为入口
  • 新增 java.lang.IO 提供 IO.println / IO.readln 等简单控制台 IO
  • 旧经验对照:需要参数时仍可声明 void main(String[] args)

Java 21 环境下请使用写法一或写法二;写法三需要 JDK 25。

JShell:交互式学习利器(Java 9+)

先在终端执行:

jshell

进入 jshell> 提示符后,逐条输入以下 Java 代码(不要复制提示符):

1 + 1
var list = new java.util.ArrayList<String>();
list.add("hello");
String greet(String name) { return "Hi, " + name; }
greet("Java");

依次可观察到加法结果 2、空列表、添加成功的 true、方法创建提示,以及 "Hi, Java"。最后在 JShell 内输入 /exit 退出。

常用命令:

命令作用
/vars查看已声明变量
/methods查看已定义方法
/list查看历史代码
/edit <片段>打开编辑器修改片段
/exit退出

旧对照:Java 9 之前想验证一段代码,必须建类、建 main、编译、运行;JShell 让”试一行代码”的成本降为零,特别适合学习新 API。

Maven 项目初体验

mvn archetype:generate -DgroupId=com.example -DartifactId=demo 
  -DarchetypeArtifactId=maven-archetype-quickstart 
  -DarchetypeVersion=1.4 -DinteractiveMode=false
cd demo
mvn package
java -cp target/classes com.example.App

关注 pom.xml 中与版本相关的最小配置:

<properties>
    <!-- release 会同时控制 source/target,并使用正确的 API 集合 -->
    <maven.compiler.release>21</maven.compiler.release>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

常用命令:mvn compile / mvn test / mvn package / mvn clean。

旧对照:source/target 只管语法级别;release(Java 9+)还会检查 API 兼容性,避免”低版本运行却用了新 API”的隐性事故。

Gradle 项目初体验

gradle init --type java-application --dsl kotlin
./gradlew run

build.gradle.kts 关键片段:

plugins {
    id("java")
    application
}

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(21) // 指定编译与运行用的 JDK
    }
}

Toolchain 让”项目要什么 JDK”成为工程配置的一部分,机器上装有对应版本即可,不再依赖全局 JAVA_HOME。

如何选择运行方式

场景推荐方式
验证语法/探索 APIJShell
单文件小工具、算法题java 文件名.java
正式工程Maven 或 Gradle + Wrapper
教学/极简示例(JDK 25)紧凑源文件 + void main()

练习与实践

练习一:三种方式跑 Hello World

  1. 分别用 javac+java、单文件直跑运行同一程序
  2. 若装有 JDK 25,改写为紧凑源文件 + IO.println

练习二:JShell 探索

  1. 在 JShell 中定义一个方法并调用
  2. 用 /vars 和 /methods 查看会话状态

练习三:工程化

  1. 分别创建 Maven 与 Gradle 项目,跑通 package / run
  2. 给两个项目都生成 Wrapper 并提交

相关文档

暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇