【发布时间】:2015-08-06 01:05:10
【问题描述】:
我正在练习 Head First Java。它有以下代码:
static {
System.out.println("Super constructor block");
}
我没有得到花括号之前的静态修饰符。这叫什么?我知道静态变量等。我尝试在线搜索但无法得到答案。谢谢。
【问题讨论】:
-
这是一个静态块
标签: java
我正在练习 Head First Java。它有以下代码:
static {
System.out.println("Super constructor block");
}
我没有得到花括号之前的静态修饰符。这叫什么?我知道静态变量等。我尝试在线搜索但无法得到答案。谢谢。
【问题讨论】:
标签: java
它被称为静态初始化块。见https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html:
静态初始化块是用大括号括起来的普通代码块,
{},前面是static关键字。
一旦类被 JVM 加载,它就会执行。
【讨论】:
这称为“静态块”。它只执行一次:第一次创建该类的对象或第一次访问该类的静态成员(即使您从未创建该类的对象)。 See this link
【讨论】:
这是 static 块而不是 static 方法。
static 块不同于 static 方法。
static 块不需要被调用并自动执行。 static 块确保它们只被调用一次,当类被加载时。
static 块可以写入类中的任何位置,在执行之前编译器将合并所有 static 块并在类加载时立即执行。
您只能在 static 块中初始化/访问静态变量/方法。这意味着您无法访问 static 块内的 non-static 变量,与 static 方法相同。
与块不同,静态方法可以多次调用,这使得方法可重用,这是块的缺点。
静态块通常用于初始化静态变量或在创建类实例或访问任何静态字段之前进行所需的其他计算..
有关更多信息,请参阅以下链接:
【讨论】: