什么是Java中静态字段的初始化程序

时间:2015-08-31 21:46:59

标签: java initialization java-8 member

我从Oracle Java教程获得以下内容 您可以在标题" 12.4下找到Execution。类和接口的初始化"

  

类的初始化包括执行其静态初始化程序和类中声明的静态字段(类变量)的初始化程序。

如果有人解释我如何"静态字段的初始化器"那将是很好的。是指"类变量"。

2 个答案:

答案 0 :(得分:5)

A"类变量"是一个声明为类的static属性的变量。通过"静态字段的初始化器"它们指的是这些静态变量的初始化,这些变量在加载类时发生。这是一个例子:

public class MyClass {
    private static int num = 0; //This is a class variable being initialized when it is declared
}

初始化静态字段的另一种方法是使用静态块:

public class MyClass {
    private static int num;
    static {
        num = 0; //This a class variable being initialized in a static block
    }
}

这些静态块在加载类时从上到下运行。

最后,引用是试图说"类变量"只是"静态字段的另一个名称。"

答案 1 :(得分:3)

static成员是一个整体属于该类的变量,而不是特定的实例。当类加载器加载类时,它被初始化一次。

E.g:

public class MyClass {
    // Note the static modifier here!
    private static int someVariable = 7;
}

此类变量的一个常见用例是static final不可变类型的成员或用于表示常量的基元:

public class Human {
    public static final String SPECIES = "Homo sapiens";
    public static final int LEGAL_DRINKING_AGE = 21; // U.S centric code :-(
}