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

我遇到了这个Java代码:

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

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

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

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

 private static int myInt; static { MyResource myResource = new MyResource(); myInt = myResource.getIntegerValue(); myResource.close(); } 

请参阅Oracle初始化字段教程的“静态初始化块”部分。

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

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

这是一个静态初始化程序 。

苏夫扬,

静态初始化程序不是inheritance的,只在JRE加载和初始化类时才执行一次。 这意味着这个静态块只会被初始化一次,而不管你在这个类中创建了多少个对象。

我不是它的忠实粉丝,我相信根据具体情况,它有更好的选择。

谢谢,红人队

这称为静态初始化块,并且在加载此类时将执行一次。

从Java 7开始,这种语法已经过时了。现在等效的是:

 public static void main(String[] args) { /* stuff */ }