答案是否定的,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、数据库、数据结构与算法等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。