这是静态方法吗? “静态的 {...}”

时间:2015-05-24 12:02:32

标签: java

我正在Head First Java中进行练习。它具有以下代码:

static {
System.out.println("Super constructor block");
}

我没有得到大括号之前的静态修饰符。这叫什么?我知道静态变量等我尝试在线搜索但无法得到答案。感谢。

3 个答案:

答案 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方法相同。

  • 由于静态方法不像块一样被调用多次,这使得方法可以重用,这是块的缺点。

  • 静态块通常用于初始化静态变量或执行在创建类实例或访问任何静态字段之前所需的其他计算。

有关更多信息,请参阅以下链接:

JavaCode.in

Oracle Docs

答案 2 :(得分:1)

这称为“静态块”。它只执行一次:第一次创建该类的对象或第一次访问该类的静态成员时(即使您从未创建该类的对象)。 See this link