答案是否定的,main()办法必须public,不能定义main()办法为private和protected,也不能不用拜访修饰符。

这是为了能让JVM拜访main()办法,如果不定义main()办法为public,尽管编译也会胜利,但会失去运行时谬误,因为找不到main办法。

(1)上面来进行验证,先把 public 改成 private,如下:

package com.magic.main;public class MainDemo {    private static void main(String[] args) {        System.out.println("Hello World");    }    }

尝试运行程序,失去的后果如下:

谬误: 在类 com.magic.main.MainDemo 中找不到 main 办法, 请将 main 办法定义为:   public static void main(String[] args)否则 JavaFX 应用程序类必须扩大javafx.application.Application

(2)把 public 改成 protected,如下:

package com.magic.main;public class MainDemo {    protected static void main(String[] args) {        System.out.println("Hello World");    }    }

尝试运行程序,失去的后果如下:

谬误: 在类 com.magic.main.MainDemo 中找不到 main 办法, 请将 main 办法定义为:   public static void main(String[] args)否则 JavaFX 应用程序类必须扩大javafx.application.Application

(3)去掉 public 修饰符

package com.magic.main;public class MainDemo {    static void main(String[] args) {        System.out.println("Hello World");    }    }

尝试运行程序,失去的后果如下:

谬误: 在类 com.magic.main.MainDemo 中找不到 main 办法, 请将 main 办法定义为:   public static void main(String[] args)否则 JavaFX 应用程序类必须扩大javafx.application.Application

从下面能够得出结论,main() 办法必须应用 public 润饰,那么问题来了:能不能申明main()办法为非静态方法?

更多无关Java面试相干的知识点能够关注【Java面试手册】小程序,波及Java根底、多线程、JVM、Spring、Spring Boot、Spring Cloud、Mybatis、Redis、数据库、数据结构与算法等。