在课堂上静态块和分配静态之间的区别?

以下两个初始化静态变量之间是否有区别:

class Class1 {    
    private static Var var;

    static {
        var = getSingletonVar();
    }  
}

class Class2 {
    private static var = getSingletonVar;
}

这两种初始化静态变量的方法在功能上是相同的吗?


是的,它的功能是一样的。

从Java文档

There is an alternative to static blocks — you can write a private static method:

class Whatever {
    public static varType myVar = initializeClassVariable();

    private static varType initializeClassVariable() {

        // initialization code goes here
    }
}

The advantage of private static methods is that they can be reused later if you need to reinitialize the class variable.

结果将是相同的。

在这两种情况下,静态变量都将通过类加载进行初始化。

静态方法和静态类块是两个不同的东西。 需要调用静态方法,静态类块会自动通过类加载来执行。


首先你没有在这里声明静态方法。 可能如果你想知道执行顺序

1) constructors

在创建实例时调用,完全独立于#2发生的时间,或者即使它发生在任何时候

2)static methods

当你调用它们时调用,完全独立于#1发生的时间,或者即使它发生在任何时候

3)static blocks

在类初始化时调用,在#1或#2发生之前发生。

链接地址: http://www.djcxy.com/p/79695.html

上一篇: Difference between static block and assigning static in class?

下一篇: Is there a way to list the java version of all my maven dependencies?