Java 中的静态块
用更简单的语言来说,每当我们使用静态关键字并将其与一个块相关联时,该块就被称为静态块。与 C++不同,Java 支持一种特殊的块,称为静态块(也称为 static 子句),可用于类的静态初始化。静态块中的这段代码只执行一次:第一次将类加载到内存中。
Java 中静态块的调用?
现在该如何调用这个静态块了。因此,为了调用任何静态块,没有指定的方法,因为当类加载到内存中时,静态块会自动执行。请参考下图,了解如何调用静态块。
插图:
class GFG {
// Constructor of this class
GFG {}
// Method of this class
public static void print() { static{} }
public static void main(String[] args) {
// Calling of method insside main()
GFG geeks = new GFG();
// Calling of constructor inside main()
new GFG();
// Calling of static block
// Nothing to do here as it is called
// autimatically as class is loaded in memory
}
}
注意:从上图中我们可以看到,一旦类被加载到内存中,静态块就会被自动调用,在 main()内部调用方法和构造函数的情况下,我们没有什么可做的。
我们可以不创建 main()方法在控制台上打印一些东西吗?
从面试的角度来看,这是一个非常重要的问题。答案是肯定的,如果我们使用的是 1.6 或之前的版本,我们可以打印,如果在那之后,它会抛出一个。错误。
示例 1-A: 运行于 JDK 版本 1.6 的前作
Java
// Java Program Running on JDK version 1.6 of Previous
// Main class
class GFG {
// Static block
static
{
// Print statement
System.out.print(
"Static block can be printed without main method");
}
}
输出:
Static block can be printed without main method
示例 1-B: 在 JDK 版本 1.6 及更高版本上运行
Java
// Java Program Running on JDK version 1.6 and Later
// Main class
class GFG {
// Static block
static
{
// Print statement
System.out.print(
"Static block can be printed without main method");
}
}
版权属于:月萌API www.moonapi.com,转载请注明出处