何时进行静态字段内联初始化

时间:2014-03-01 22:54:32

标签: java classloader static-members

考虑一下:

Class A
{
   private static B b = new B();
   private static C c;

   static
   {
     c= new C();
   }
}
  1. 是否在类加载时发生b的初始化?
  2. 初始化c
  3. 的同样问题
  4. bc的第一次初始化会发生什么? 如果存在,请向我提供有关此问题的java文档的参考。
  5. 由于

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

带有static修饰符的代码块表示类初始值设定项;如果没有static修饰符,代码块就是一个实例初始值设定项。

静态初始化程序按照它们被定义的顺序执行(自上而下,就像简单的变量初始化程序一样)在加载类时(实际上,当它被解析时,但这是技术性的。)

实例初始化程序在实例化时定义的顺序执行,紧接在执行构造函数代码之前,在超级构造函数的调用之后立即执行。

static block