Java中的`static {}`关键字是什么意思?

5

可能是重复内容:
Java中的静态块

我看到了以下使用static的方式,但不知道它的作用。我知道可以使用例如static String hello = "World";,但我不理解以下内容。

static {
   loadFromProperties(new Properties());
}

程序中的静态块是在虚拟机初始化时首先执行的。更具体地说,静态块用于初始化静态常量。public static final int MAX_ITER; static { int dummyMaxIter = AClass.calculateABC(); if (dummyMaxIter >= 0) { MAX_ITER = dummyMaxIter; } else { MAX_ITER = 0; } }请查看上述代码段。可以直接从 AClass.calculateABC() 初始化 MAX_ITER。但是,在分配之前需要验证 AClass.calculateABC() 返回的值。 - Mohan
你是对的,这是一个重复的。很抱歉。 - dokaspar
2个回答

8

初始化和实例化是否不同? - NimChimpsky
5
类的初始化发生在任何实例被创建(实例化)之前。 - T.J. Crowder

3
这被称为静态块。它们在类被加载/初始化之前执行,但在实例化之前。您可以使用它们来初始化静态成员/字段。

实际上,它是在类被初始化时执行的。(尽管在实践中你很少会注意到这种差异。) - aioobe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接