JDK 工具学习系列(一):javac、java 命令与 main 方法详解

JDK 工具学习系列(一):javac、java 命令与 main 方法详解

本文将带你快速了解 Java 程序的编译与运行流程,掌握 javac、java 命令的基本用法,并深入理解 Java 程序的入口------main 方法。


0. 官方命令解释

  • java - launch a Java application
  • javac - read Java class and interface definitions and compile them into bytecode and class files

1. 编写第一个 Java 程序

创建一个名为 HelloWorld.java 的文件,内容如下:

java 复制代码
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, JDK!");
    }
}

2. 使用 javac 编译 Java 源文件

javac 是 Java 的编译器,用于将 .java 源文件编译为 .class 字节码文件。

bash 复制代码
javac HelloWorld.java

执行后,会在当前目录下生成一个 HelloWorld.class 文件。


3. 使用 java 运行 Java 程序

java 命令用于运行编译后的 Java 字节码文件。

bash 复制代码
java HelloWorld

输出结果:

复制代码
Hello, JDK!

注意:运行时只写类名,不加 .class 后缀。


4. main 方法详解

标准写法

java 复制代码
public static void main(String[] args) {
    // 程序入口
}

各部分含义

  • public:公开的,JVM 需要从外部调用它
  • static:静态的,不需要创建对象就能调用
  • void:没有返回值
  • main:方法名,Java 程序的入口
  • String[] args:字符串数组参数,用于接收命令行参数

String\[\] args 的作用

args 是一个字符串数组,代表命令行参数。例如:

java 复制代码
public class Demo {
    public static void main(String[] args) {
        System.out.println("参数个数: " + args.length);
        for (String arg : args) {
            System.out.println(arg);
        }
    }
}

命令行运行:

bash 复制代码
java Demo hello world 123

输出:

makefile 复制代码
参数个数: 3
hello
world
123

5. JDK 11+ 的新特性

从 JDK 11 开始,可以直接用 java 命令运行单个 Java 源文件,无需手动编译:

bash 复制代码
java HelloWorld.java

适合简单程序和脚本场景。对于多文件或复杂项目,仍推荐使用 javac 进行编译。


6. 总结

  • 用 javac 编译 .java 文件,生成 .class 字节码
  • 用 java 运行 .class 文件
  • main 方法是 Java 程序的入口,String[] args 用于接收命令行参数
  • JDK 11+ 支持直接运行单文件 Java 程序

希望本文能帮助你快速入门 Java 的编译与运行流程,理解 main 方法的本质和作用!

相关推荐
sunshine22 girl8 分钟前
Java学习五 面向对象高级5 内部类1
java·学习
用户1305180712152 小时前
JDBC学习DAY2:从Statement到PreparedStatement
java
蛋蛋的就会顺顺的2 小时前
hot100——矩阵
java·数据结构·算法·leetcode·力扣
周杰偷奶茶2 小时前
【Java】数组的定义和使用(附管理系统实战案例)
java·开发语言
橙子圆1233 小时前
JUC之集合类不安全
java·开发语言
谢亮_vipxieliang4 小时前
Stream API 不是银弹:常见坑与性能建议
java·开发语言
源码宝4 小时前
Web‑PACS 云影像源码|Java+Vue3 医院影像管理系统完整方案
java·源码·影像pacs·成品源码·医院影像系统
ShineWinsu4 小时前
对于Redis:string类型的解析
java·c++·redis·分布式·缓存·面试·string
三8446 小时前
Fastjson 漏洞 · 02 · autoType 机制与 checkAutoType
java·fastjson