在课堂上静态块和分配静态之间的区别?
以下两个初始化静态变量之间是否有区别:
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?