运行静态对象构造多少次?

时间:2014-01-03 17:49:49

标签: java constructor static

对java和静态变量有点怀疑。我有类似的东西,问题是:MyObject()构造函数只运行一次或每次我创建一个新的MyClass实例?

public class MyClass{    
static MyObject obj = new MyObject();
...

谢谢!

3 个答案:

答案 0 :(得分:5)

  

MyObject()构造函数只运行一次或每次我创建一个新的MyClass实例?

在执行过程(类初始化)启动并在所有实例中共享(单个副本)时,它只运行一次。

  

在类初始化时执行类中声明的静态初始化程序(第12.4.2节)。与类变量的任何字段初始值设定项(第8.3.2节)一起,静态初始值设定项可用于初始化类的类变量。

http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.7

答案 1 :(得分:4)

是的,它只会创建一次!静态字段在所有实例中很常见。具体来说,它是在初始化class时创建的。

答案 2 :(得分:0)

在课程加载过程中只执行一次。