杰瑞科技汇

如何运行Java类的方法?

main 方法

当你想直接运行一个 Java 类时(通过命令行 java MyClass),Java 虚拟机(JVM)会寻找该类中的一个特殊方法,作为程序的入口点,这个方法就是 public static void main(String[] args)

如何运行Java类的方法?-图1
(图片来源网络,侵删)
  • public: 访问修饰符,表示这个方法可以被任何其他类访问。
  • static: 关键字,表示这个方法属于类本身,而不是类的某个实例(对象),你不需要创建对象就可以调用它,这是 JVM 能够直接找到它的原因。
  • void: 返回类型,表示这个方法在执行完毕后不返回任何值。
  • main: 方法名,JVM 约定的固定名称。
  • String[] args: 参数列表,这是一个字符串数组,用于接收在命令行中传入的参数。

运行类的 main 方法(最常见的场景)

这是最直接的方式,通常用于启动一个应用程序。

步骤 1:编写 Java 类

创建一个名为 MyFirstProgram.java 的文件。

// MyFirstProgram.java
public class MyFirstProgram {
    // 这是程序的入口点
    public static void main(String[] args) {
        System.out.println("Hello, World! 程序已启动。");
        // 调用同一个类中的另一个方法
        printMessage();
    }
    // 一个普通的实例方法
    public void printMessage() {
        System.out.println("这是通过 main 方法调用的另一个方法。");
    }
}

步骤 2:编译代码

打开终端或命令提示符,导航到 MyFirstProgram.java 文件所在的目录,然后使用 javac 命令进行编译。

javac MyFirstProgram.java

如果编译成功,你会得到一个 MyFirstProgram.class 文件,这是 Java 字节码。

如何运行Java类的方法?-图2
(图片来源网络,侵删)

步骤 3:运行类

使用 java 命令来运行这个类。注意:这里运行的是类名,而不是文件名,并且不需要加 .class 后缀。

java MyFirstProgram

输出结果:

Hello, World! 程序已启动。
这是通过 main 方法调用的另一个方法。

调用其他类的方法(更常见的情况)

在实际开发中,main 方法通常只负责启动程序,而大部分业务逻辑都在其他类的方法中,这时你需要创建对象来调用这些非 static 方法。

步骤 1:编写多个 Java 类

假设你有两个文件:MainApp.java(包含 main 方法)和 Calculator.java(包含可调用的方法)。

如何运行Java类的方法?-图3
(图片来源网络,侵删)

文件 1: Calculator.java

// Calculator.java
public class Calculator {
    // 一个实例方法,需要创建对象才能调用
    public int add(int a, int b) {
        return a + b;
    }
    // 另一个实例方法
    public void displayResult(int result) {
        System.out.println("计算结果是: " + result);
    }
    // 一个静态方法,可以直接通过类名调用
    public static void printWelcomeMessage() {
        System.out.println("欢迎使用计算器!");
    }
}

文件 2: MainApp.java

// MainApp.java
public class MainApp {
    public static void main(String[] args) {
        // 1. 调用 Calculator 类的静态方法
        Calculator.printWelcomeMessage();
        // 2. 创建 Calculator 类的实例(对象)
        Calculator myCalculator = new Calculator();
        // 3. 使用对象调用实例方法
        int sum = myCalculator.add(10, 25);
        myCalculator.displayResult(sum);
    }
}

步骤 2 & 3:编译和运行

在终端中,确保两个文件在同一个目录下,然后编译并运行 MainApp

# 编译所有 .java 文件
javac *.java
# 运行包含 main 方法的类
java MainApp

输出结果:

欢迎使用计算器!
计算结果是: 35

关键区别:静态方法 vs. 实例方法

理解这两者的区别至关重要:

特性 静态方法 (static) 实例方法
所属 属于类本身 属于类的实例(对象)
调用方式 通过类名直接调用 (e.g., ClassName.method()) 必须先创建对象,然后通过对象调用 (e.g., obj.method())
内存占用 类加载时存在于方法区,整个程序生命周期中只有一份 每创建一个对象,就会在堆内存中生成一份方法引用
访问权限 只能访问类的静态成员(静态变量、静态方法) 可以访问类的所有成员,包括实例变量、实例方法和静态成员
类比 类似于一个工具箱里的工具,谁都能用 类似于你自己的汽车,只有你能开

总结与操作流程

  1. 确定入口:如果你想直接从命令行运行一个程序,请确保该类有一个 public static void main(String[] args) 方法。
  2. 编译:使用 javac YourClassName.java.java 源文件编译成 .class 字节码文件。
  3. 运行:使用 java YourClassName 来启动程序,JVM 会加载 YourClassName 类,并执行其 main 方法。
  4. 调用其他方法
    • 如果要调用的方法是 static 的(比如工具类方法),直接用 ClassName.methodName() 调用。
    • 如果要调用的方法是非静态的(实例方法),必须先用 ClassName objectName = new ClassName(); 创建一个对象,然后用 objectName.methodName() 来调用。

常见问题

Q: 为什么运行时用 java MyFirstProgram,而不是 java MyFirstProgram.class

A: javac 是 Java 编译器,它需要一个 .java 源文件作为输入,并输出 .class 字节码文件,而 java 是 Java 虚拟机(JVM)的启动器,它需要一个类名作为输入,然后去类路径(Classpath)下寻找对应的 .class 文件来加载和执行,你告诉它的是“运行哪个类”,而不是“加载哪个文件”。

Q: Error: Could not find or load main class MyFirstProgram 怎么办?

A: 这是非常常见的错误,原因通常是:

  • 不在正确的目录:确保你在包含 .class 文件的目录下运行 java 命令。
  • 类名大小写错误:Java 是大小写敏感的,MyFirstProgrammyfirstprogram 是不同的。
  • 类路径问题.class 文件不在当前目录,你需要使用 -cp-classpath 选项来告诉 JVM 去哪里找。java -cp /path/to/your/classes MyFirstProgram
  • 包名问题:如果你的类在包(package)中,运行方式会更复杂,需要包含完整的包路径。
分享:
扫描分享到社交APP
上一篇
下一篇