Monday, September 7, 2026

Static Block vs Instance Initialization Block in Java (With Example)

 

In Java, understanding the order of execution between static blocks and instance initialization blocks is essential for managing class-level and object-level setup.

  • Static Block (static { ... }): Belongs to the class itself, not to any specific object. It executes exactly once when the class is loaded into memory by the JVM, well before any instances are constructed.

  • Instance Initialization Block ({ ... }): Belongs to individual object instances. It executes every time a new object is created, running immediately before the constructor body.

 Code Example - InitBlockStaticBlock.java

 public class InitBlockStaticBlock {

    // 1. Static Initialization Block: Runs once when the class is loaded
    static {
        System.out.println("Executing static block (Class loaded)");
    }

    // 2. Instance Initialization Block: Runs once per object instantiation
    {
        System.out.println("Executing instance init block (Object created)");
    }

    public static void main(String[] args) {
        System.out.println("--- Inside main method ---");

        InitBlockStaticBlock obj1 = new InitBlockStaticBlock();
        InitBlockStaticBlock obj2 = new InitBlockStaticBlock();
        InitBlockStaticBlock obj3 = new InitBlockStaticBlock();
    }
}
 

Output :- 

Executing static block (Class loaded)
--- Inside main method ---
Executing instance init block (Object created)
Executing instance init block (Object created)
Executing instance init block (Object created) 

No comments:

Post a Comment