Last Updated : 27 Jul, 2025
Whenever we use a static keyword and associate it to a block, then that block is referred to as a static block. Java supports static block (also called static clause) that can be used for static initialization of a class. This code inside the static block is executed only once: the first time the class is loaded into memory.
Calling of static block in Java?
In order to call any static block, there is no specified way, as a static block executes automatically when the class is loaded in memory.
Illustration:
Java
class GFG {
// Constructor of this class
GFG() {}
// Method of this class
public static void print() { }
static{}
public static void main(String[] args) {
// Calling of method inside main()
GFG geeks = new GFG();
// Calling of constructor inside main()
new GFG();
// Calling of static block
// Nothing to do here as it is called
// automatically as class is loaded in memory
}
}
Note: From the above illustration, we can perceive that static blocks are automatically called as soon as the class is loaded in memory, and there is nothing to do as we have to in case of calling methods and constructors inside main().
Can we print something on the console without creating a main() method?
It is a very important question from the interview's perceptive point. The answer is yes we can print if we are using JDK version 1.6 or previous and if after that it will throw an. Error.
Example 1-A: Running on JDK version 1.6 of the Previous
Java
class GFG {
// Static block
static
{
// Print statement
System.out.print(
"Static block can be printed without main method");
}
}
Output:
Static block can be printed without the main method
Example 1-B: Running on JDK version 1.6 and later
Java
class GFG {
// Static block
static
{
// Print statement
System.out.print(
"Static block can be printed without main method");
}
}
Output:
Execution of Static BlockExample 1:
Java
class Test {
// Case 1: Static variable
static int i;
// Case 2: non-static variables
int j;
// Case 3: Static block
static
{
i = 10;
System.out.println("static block called ");
}
// End of static block
}
// Class 2
class GFG {
// Main driver method
public static void main(String args[])
{
System.out.println(Test.i);
}
}
static block called 10
Remember: Static blocks can also be executed before constructors.
Example 2:
Java
class Test {
// Case 1: Static variable
static int i;
// Case 2: Non-static variable
int j;
// Case 3: Static blocks
static
{
i = 10;
System.out.println("static block called ");
}
// Constructor calling
Test() { System.out.println("Constructor called"); }
}
class GFG {
// Main driver method
public static void main(String args[])
{
// Although we have two objects, static block is executed only once.
Test t1 = new Test();
Test t2 = new Test();
}
}
static block called Constructor called Constructor called
A class can have any number of static initialization blocks, and they can appear anywhere in the class body. The runtime system guarantees that static initialization blocks are called in the order that they appear in the source code.
Note: We use an Initializer Block in Java if we want to execute a fragment of code for every object, which is seen widely in enterprising industries in development.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4