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

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

本文将带你快速了解 Java 程序的编译与运行流程,掌握 javacjava 命令的基本用法,并深入理解 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 方法的本质和作用!

相关推荐
寻星探路6 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
曹牧8 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
爬山算法9 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
kfyty7259 小时前
集成 spring-ai 2.x 实践中遇到的一些问题及解决方案
java·人工智能·spring-ai
猫头虎9 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
李少兄9 小时前
在 IntelliJ IDEA 中修改 Git 远程仓库地址
java·git·intellij-idea
忆~遂愿9 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
小韩学长yyds10 小时前
Java序列化避坑指南:明确这4种场景,再也不盲目实现Serializable
java·序列化
仟濹10 小时前
【Java基础】多态 | 打卡day2
java·开发语言