答案是否定的,main()方法必须声明为静态的,这样JVM才可以调用 main() 方法而无需先实例化它的类。

因为main是程序的入口方法,所以当程序运行时,第一个执行的方法就是main()方法。通常来讲,要执行一个类的方法,先必须实例化一个类的对象,然后通过对象来调用这个方法。但由于main是程序的入口方法,此时还没有实例化对象,因此在编写main()方法时就要求不需要实例化对象就可以调用这个方法,鉴于此,main()方法需要被定义成public与static。

如果从main()方法去掉 static 这个声明,虽然编译依然可以成功,但在运行时会导致程序失败,比如下面的程序:

package com.magic.main;

public class MainDemo {

    public void main(String[] args) {
        System.out.println("Hello World");
    }
    
}

(1)先使用 javac MainDemo.java 命令进行编译,会得到 MainDemo.class 文件;

(2)再使用 java MainDemo.class 命令运行,会看到输出如下的错误

错误: 找不到或无法加载主类 MainDemo.class

从上可以看出,如果去掉 main() 方法的 static 声明,虽然编译是成功的,但是无法运行!

同理,如果去掉 public 修饰符,或者将其修改成 private 或 protected,都是无法运行的。

更多有关Java面试相关的知识点可以关注【Java面试手册】小程序,涉及Java基础、多线程、JVM、Spring、Spring Boot、Spring Cloud、Mybatis、Redis、数据库、数据结构与算法等。


十方
226 声望433 粉丝