在java中没有main函数的print

sum*_*000 1 java

我的朋友们一直在问这个问题

编写一个程序来打印"Hello,World"而不使用 java中的main()函数

所以我的问题是:

是否真的可以编写和编译没有main()的程序,毫无例外.

Mat*_*Mat 8

public class Test {
    static {
        System.out.println("Hello,World");
        System.exit(0);
    }
}
Run Code Online (Sandbox Code Playgroud)

Hello,World使用1.7之前的Java VM进行打印.Oracle JDK 1.7 main在初始化类之前检查a .

JLS执行部分12.1.4似乎表明JVM 尝试运行main的方法,但初始化已运行之后.这似乎在Java 1.7中有不同的解释.

特别感谢Ted HoppSystem.exit(0)线路.

  • 您可以通过在`println`之后添加对`System.exit(0);`的调用来避免异常. (3认同)
  • JVM首先加载类,然后查找其主方法,并抛出异常.但是在加载类时,会执行静态块 (2认同)