Java Code Block Usage Considerations and Details
1. static code block
- Static Code Block: The static code block, also known as the static initializer, is used to initialize the class.
- Execution: It executes when the class is loaded and runs only once.
- Difference from Instance Initializer Block: Unlike instance initializer blocks, which run each time an object is created, static blocks run only once.
Example:
1 | class Example { |
Output:
1 | Static block executed. |
2. When is a class loaded? [Important to remember]
- When creating an instance of the class (
new
)1
Example ex = new Example();
- When creating an instance of a subclass, the parent class is also loaded
1
2
3class Parent {}
class Child extends Parent {}
Child c = new Child(); // Both Parent and Child classes will be loaded - When accessing static members of the class (static attributes, static methods)
1
Example.count; // Accessing a static variable
3. Instance Initializer Block
- Execution: The instance initializer block runs when an instance of the class is created.
- Execution Frequency: It is executed each time an object is created.
- Non-execution with Static Members: If only the class’s static members are accessed, the instance initializer block will not execute.
Example:
1 | class Example { |
Output:
1 | Main method executed. |
Demonstration Case: Class A extends Class B with static block
1 | class A { |
Output:
1 | A |
In this example, the static block of class A will execute first, followed by the static block of class B when class B is loaded. Then, the main method is executed. When an instance of class B is created, the instance initializer block (if any) and constructor of class A will execute first, followed by those of class B.