Static {}在Java语法中的含义是什么?

suf*_*que 27 java static

我遇到了这个Java代码:

static {
    String aux = "value";
    try {
        // some code here
    } catch (Exception e) { }
    String UUID_prefix = aux + ":";
}
Run Code Online (Sandbox Code Playgroud)

我是Java新手,请解释这里发生的事情.

Jon*_*uis 28

这是一个静态初始化块.可以把它想象成构造函数的静态版本.在实例化类时运行构造函数; 静态初始化块在类加载时运行.

您可以将它们用于这样的事情(显然是伪造的代码):

private static int myInt;

static {
    MyResource myResource = new MyResource();
    myInt = myResource.getIntegerValue();
    myResource.close();
}
Run Code Online (Sandbox Code Playgroud)

请参阅Oracle关于初始化字段的教程的"静态初始化块"部分.


Jig*_*shi 11

这是在类加载器加载类时将调用的代码块


zel*_*ler 7

这是一个静态初始化块.您必须在任何方法之外的类中找到它.在类加载时,静态init块仅对每个类运行一次.