What are static blocks in Java?
Overview
When the static keyword is attached to a block of code, the block is called a static block.
Syntax
class Main{
static {
System.out.println("Hello World");
}
}
Execution of static blocks
- Static blocks in Java are executed automatically when the class is loaded in memory.
- Static blocks are executed before the
main()method. - Static blocks are executed only once as the class file is loaded to memory.
- A class can have any number of static initialization blocks.
- The execution of multiple static blocks will be in the same sequence as written in the program. For example, the static blocks are executed from top to bottom.
- It’s possible to have only static blocks without a
main()method up to Java version 1.5. - Static blocks cannot access instance (non-static) variables and methods.
Advantages of static blocks
- The logic to be executed during the class loading before executing the
main()method can be in a static block. - Static blocks are mainly used to initialize the static variables.
Code
class Main{static {System.out.println("Static Block 1");}static {System.out.println("Static Block 2");}public static void main(String[] args) {System.out.println("hello world");}}
Explanation
- Lines 3–5: We define a static block that prints
Static Block 1. - Lines 7–9: We define a static block that prints
Static Block 2. - Lines 11–13: We define the main method that prints
hello world.
When the code is run, first the code in the static block is run then the main method is executed.