小编典典

Java中的静态块与初始化器块?

java

考虑以下 代码

public class Test {
    {
        System.out.println("Empty block");
    }
    static {
        System.out.println("Static block");
    }
    public static void main(String[] args) {
        Test t = new Test();
    }
}

我们知道,首先将执行 静态 块,然后执行 块。但是问题是,我从未能够理解 块的真正用途。任何人都可以展示一个真实的例子,其中-

  • 无论 静态 正在使用的块
  • 无论 静态 块具有不同的事业

阅读 220

收藏
2020-09-11

共1个答案

小编典典

它们用于两个非常不同的目的:

  • 静态初始化程序块将在加载类时被调用,并且将无法访问实例变量或方法。根据@Prahalad Deshpande的评论,它通常用于创建静态变量。
  • 另一方面,非静态初始化程序块仅在对象构造上创建,可以访问实例变量和方法,并且(根据@EJP建议的重要更正)将在构造函数的开头,在调用任何其他后续构造函数代码 之前, 已(显式或隐式)调用了超级构造函数。我已经看到当一个类具有多个构造函数并且需要为所有构造函数调用相同的初始化代码时使用它。与构造函数一样,您应该避免在此块中调用非最终方法。
2020-09-11