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