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 分钟前
m280本科生导师指导平台
java·数据库·spring·tomcat·maven·intellij-idea
一直都在57228 分钟前
Java死锁
java·开发语言
我真会写代码1 小时前
深度解析并发编程锁升级:从偏向锁到重量级锁,底层原理+面试考点全拆解
java·并发编程·
Meepo_haha1 小时前
创建Spring Initializr项目
java·后端·spring
会编程的土豆1 小时前
C++中的 lower_bound 和 upper_bound:一篇讲清楚
java·数据结构·算法
Memory_荒年1 小时前
SpringBoot事务源码深度游:从注解到数据库的“奇幻漂流”
java·后端·spring
编码忘我1 小时前
为什么要用SpringBoot
java·后端
神舟之光1 小时前
Java面向对象编程知识补充学习-2026.3.21
java·开发语言·学习
Memory_荒年2 小时前
SpringBoot事务:从“一键开关”到“踩坑大全”的生存指南
java·后端·spring
DJ斯特拉2 小时前
SpringAOP
java