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