Java中静态字段的初始化器是什么?

4
我从Oracle Java教程中得到了以下行: 您可以在此处找到此处Execution标题为“12.4.类和接口的初始化”

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

如果有人能解释一下“静态字段的初始化器”如何引用“类变量”,那将是非常好的。

2
关于静态初始化器(又称静态块)的问题,这里有一个非常好的答案:https://dev59.com/7XA85IYBdhLWcg3wF_i0#2943575 - Sva.Mu
1
也许你只是误读了这句话。“静态字段”和“类变量”只是同义词,括号中的所有单词都是想告诉你这一点。你可以在心里省略插入语,或者用“类变量”替换“静态字段”,语义上并没有任何区别。 - Holger
2个回答

5

"类变量"是一个声明为类的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
    }
}

当类被加载时,这些静态块会从上到下运行。

总的来说,这句话试图表达的意思是,“类变量”只是“静态字段”的另一个名称。


3

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

例如:

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 :-(
}

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