Java 中非静态块相对于构造函数的执行顺序是什么?

javaobject oriented programmingprogramming更新于 2024/7/29 16:41:00

每当创建一个对象时,非静态块将在执行构造函数之前执行。

非静态块

  • 非静态块类级别的块,没有任何原型。
  • 需要非静态块是为了在创建对象时执行任何逻辑,而不管构造函数是什么。
  • JVM会自动调用非静态块,每次在java 堆栈区域中创建对象时都会调用它。
  • 我们可以创建任意数量的Java 中的非静态块
  • 非静态块执行顺序定义的顺序

示例

public class NonStaticBlockTest {
   {
      System.out.println("First Non-Static Block"); // first non-static block
   }
   {
      System.out.println("Second Non-Static Block"); // second non-static block
   }
   {
      System.out.println("Third Non-Static Block"); // third non-static block
   }
   NonStaticBlockTest() {
      System.out.println("Execution of a Constructor"); // Constructor
   }
   public static void main(String args[]) {
      NonStaticBlockTest nsbt1 = new NonStaticBlockTest();
      NonStaticBlockTest nsbt2 = new NonStaticBlockTest();
   }
}

输出

First Non-Static Block
Second Non-Static Block
Third Non-Static Block
Execution of a Constructor
First Non-Static Block
Second Non-Static Block
Third Non-Static Block
Execution of a Constructor

相关文章