当程序可以使用静态块在java 6中不使用main时执行那么为什么需要main方法

时间:2015-02-19 05:45:23

标签: java

例如 -

   class A3{  
  static{  
  System.out.println("static block is invoked");  
  System.exit(0);  
  }  
}  

有人向我解释原因。

4 个答案:

答案 0 :(得分:2)

如果没有main(),“程序”就无法执行(除非它是servlet或applet,在这种情况下,Web容器或Web浏览器管理相应的entry point)。在您的示例中,一个静态块,只有在其他运行类初始化(通常通过引用)类A3时才会执行。

JLS-8.7. Static Initializers读取(部分)

  

在类初始化(§12.4.2)时执行类中声明的静态初始化程序。

答案 1 :(得分:2)

静态块在首次初始化时(在加载之后)执行。 main()方法用作应用程序的入口点。首次引用类时,(隐式)加载类(并且可能初始化)。

看到差异?您需要通过将main()方法放入类中来指定程序/应用程序的入口点。初始化类时运行静态初始化程序,它不是程序的入口点,而是在初始化类时运行的一组语句(通常用于执行某些设置工作,如初始化静态字段(如映射))

答案 2 :(得分:0)

在程序启动时不一定要调用静态块;它可以延迟到每次初始化类时。有必要指定一个带有main函数的主类,以指示应该在程序启动时调用的入口点,以及Java的工作原理。

答案 3 :(得分:0)

如果要打印简单的打印语句,静态块就足够了。但实时程序从不包含system.out.println语句。而且你不能访问非静态变量,方法......等等,这意味着它没用。