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

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

非静态块

  • 非静态块一流水平不具有任何原型块。

  • 对于非静态块的需求是,无论何时创建对象,无论构造方法如何,都必须执行任何逻辑。

  • 对于Java堆栈区域中的每个对象创建,JVM 都会自动调用 非静态块

  • 我们可以在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