⬅ Previous Topic
Java Static Methods ExplainedNext Topic ⮕
Java final Variables⬅ Previous Topic
Java Static Methods ExplainedNext Topic ⮕
Java final VariablesIn Java, a static block (also known as a static initialization block) is a code block that's executed once when the class is loaded into memory. It's mostly used to initialize static variables or execute code that must run before any objects of the class are created.
Static blocks are especially useful when:
class MyClass {
static {
// This code runs once when the class is loaded
}
}
public class StaticBlockExample {
static {
System.out.println("Static block executed");
}
public static void main(String[] args) {
System.out.println("Main method executed");
}
}
Static block executed
Main method executed
When you run the class, the JVM loads it and executes the static block first. After that, it invokes the main()
method.
public class Config {
static int MAX_USERS;
static String APP_NAME;
static {
MAX_USERS = 100;
APP_NAME = "MyApp";
System.out.println("Static block: Configuration loaded");
}
public static void main(String[] args) {
System.out.println("App: " + APP_NAME);
System.out.println("Max users: " + MAX_USERS);
}
}
Static block: Configuration loaded
App: MyApp
Max users: 100
The static block sets up configuration data for the class. It's run only once and the values are available for use throughout the application wherever static members are accessible.
public class MultiStaticBlocks {
static {
System.out.println("Static block 1");
}
static {
System.out.println("Static block 2");
}
public static void main(String[] args) {
System.out.println("Main method");
}
}
Static block 1
Static block 2
Main method
If there are multiple static blocks, they execute in the order they appear in the class, from top to bottom, during class loading.
public class NoObjectNeeded {
static {
System.out.println("Class is loaded!");
}
public static void hello() {
System.out.println("Hello!");
}
}
// Another class
public class Test {
public static void main(String[] args) {
NoObjectNeeded.hello();
}
}
Class is loaded!
Hello!
Even though we didn’t create an object of NoObjectNeeded
, calling its static method triggered class loading, which caused the static block to run. Static blocks belong to the class itself, not to any instance.
main()
if the class is loaded.Static blocks are a common favorite in Java interviews. You might be asked, "What happens if there's a static block but no main method?" Answer: the static block still runs when the class is loaded, but you'll get a runtime error unless a valid main()
method is found to continue execution.
Static blocks might feel like backstage workers in Java – quiet, behind the scenes, but essential. Whether you're preloading values or just setting the stage before the curtain rises (a.k.a. main()
), understanding static blocks is a fundamental step toward mastering class behavior and lifecycle in Java.
public class Example {
static {
System.out.println("Static block");
}
public static void main(String[] args) {
System.out.println("Main method");
}
}
public class Blocks {
static {
System.out.println("First block");
}
static {
System.out.println("Second block");
}
public static void main(String[] args) {
System.out.println("Main method");
}
}
⬅ Previous Topic
Java Static Methods ExplainedNext Topic ⮕
Java final VariablesYou can support this website with a contribution of your choice.
When making a contribution, mention your name, and programguru.org in the message. Your name shall be displayed in the sponsors list.