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

时间:2011-11-10 16:04:54

标签: java static

我遇到了这个Java代码:

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

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

7 个答案:

答案 0 :(得分:25)

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

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

private static int myInt;

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

请参阅Oracle's tutorial on initializing fields的“静态初始化块”部分。

答案 1 :(得分:9)

这是在类加载器

加载类时将调用的代码块

答案 2 :(得分:6)

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

答案 3 :(得分:3)

答案 4 :(得分:3)

苏富扬,

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

我不是它的忠实粉丝,我相信有更好的选择,视情况而定。

谢谢, 红色

答案 5 :(得分:2)

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

答案 6 :(得分:1)

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

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