0
为什么当我不为该类的对象(匿名)创建引用变量时,类中的静态块不会被执行?静态块在匿名对象的情况下不会被执行
例如,让我们考虑这个简单的类:
public class StaticDemo {
private static int x;
public static void display(){
System.out.println("Static Method: x = "+x);
}
static {
System.out.println("Static Block inside class");
}
public StaticDemo(){
System.out.println("Object created.");
}
}
用它另一类:
public class UseStaticDemo {
public static void main(String[] args) {
StaticDemo Obj = new StaticDemo();
Obj.display();
System.out.println("------------");
new StaticDemo().display();
}
}
输出:
Static Block inside class
Object created.
Static Method: x = 0
------------
Object created.
Static Method: x = 0
如果你还没有这样做,请阅读一下静态块。另外,尝试运行相同的代码,但用引用的代码替换匿名对象。然后,它会变得清晰。答案在于你的代码本身。 – 2014-10-12 05:34:19
@BoratSagdiyev如下面的答案所示,被引用或匿名的对象与正在执行的静态块无关。每当该类首次加载时,它将被执行一次。 – UrsinusTheStrong 2014-10-12 06:15:30
这正是我的观点。即使您使用非匿名对象,您的输出也是一样的。所以,你可以自己得到答案,而不必在这里问。但是,总是感到欢迎问。 – 2014-10-12 06:20:56