在匿名对象的情况下,不会执行静态块

时间:2014-10-12 05:28:36

标签: java static

当我没有为该类的对象(匿名)创建引用变量时,为什么不会执行类中的静态块?

例如,让我们考虑一下这个简单的类:

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

1 个答案:

答案 0 :(得分:5)

static初始化程序块仅在类loaded and initialized时运行一次。

此外,static方法与任何实例完全无关。做

new StaticDemo().display();

毫无意义且不清楚。