对java和静态变量有点怀疑。我有类似的东西,问题是:MyObject()构造函数只运行一次或每次我创建一个新的MyClass实例?
public class MyClass{
static MyObject obj = new MyObject();
...
谢谢!
答案 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)
在课程加载过程中只执行一次。