📖 Scenario: Imagine you are creating a simple Java program that needs to initialize some settings before anything else runs. Static blocks help you set up these settings once when the program starts.
🎯 Goal: You will create a Java class with a static block that prints a message when the class loads, then create a main method to show how static blocks work.
📋 What You'll Learn
Create a class called Setup
Add a static block inside the Setup class that prints "Static block executed"
Add a main method inside the Setup class that prints "Main method executed"
Run the program to see the order of output
💡 Why This Matters
🌍 Real World
Static blocks are used to initialize resources or settings once when a program or class starts, like loading configuration or setting up connections.
💼 Career
Understanding static blocks helps in Java programming jobs where initialization and class loading behavior matter, such as backend development or system programming.
Progress0 / 4 steps
1
Create the Setup class
Write a public class called Setup with no content inside yet.
Java
Hint
Use public class Setup { } to create the class.
2
Add a static block that prints a message
Inside the Setup class, add a static block that prints "Static block executed" using System.out.println.
Java
Hint
Use static { System.out.println("Static block executed"); } inside the class.
3
Add the main method that prints a message
Add a public static main method inside the Setup class that prints "Main method executed" using System.out.println.
Java
Hint
Use public static void main(String[] args) { System.out.println("Main method executed"); }.
4
Run the program and observe the output
Run the Setup class and print the output to see the order of messages.
Java
Hint
The static block runs first when the class loads, then the main method runs.
Practice
(1/5)
1. What is the main purpose of a static block in Java?
easy
A. To handle exceptions during runtime
B. To create instance variables for each object
C. To initialize static variables or run code once when the class loads
D. To define methods that can be overridden
Solution
Step 1: Understand static block behavior
A static block runs once when the class is loaded, before any object is created.
Step 2: Identify its purpose
It is mainly used to initialize static variables or run setup code that should execute once.
Final Answer:
To initialize static variables or run code once when the class loads -> Option C
Hint: Static blocks run once at class load for static setup [OK]
Common Mistakes:
Thinking static blocks run for each object
Confusing static blocks with constructors
Assuming static blocks handle exceptions only
2. Which of the following is the correct syntax for a static block in Java?
easy
A. static() { System.out.println("Hello"); }
B. static { System.out.println("Hello"); }
C. static void { System.out.println("Hello"); }
D. static class { System.out.println("Hello"); }
Solution
Step 1: Recall static block syntax
A static block is declared with the keyword static followed by braces containing code, without parentheses or return types.
Step 2: Check options
static { System.out.println("Hello"); } matches the correct syntax: static { ... }. Others incorrectly add parentheses, return types, or keywords.
Final Answer:
static { System.out.println("Hello"); } -> Option B
Quick Check:
Static block syntax = static { ... } [OK]
Hint: Static blocks have no parentheses or return type [OK]
Common Mistakes:
Adding parentheses after static keyword
Using void or other return types
Trying to declare static block as a method
3. What will be the output of the following Java code?
class Test {
static int x;
static {
x = 5;
System.out.print("A");
}
static {
x = 10;
System.out.print("B");
}
public static void main(String[] args) {
System.out.print(x);
}
}
medium
A. AB10
B. BA10
C. AB5
D. BA5
Solution
Step 1: Understand static block execution order
Static blocks run in the order they appear when the class loads. First block prints "A" and sets x=5, second prints "B" and sets x=10.
Step 2: Trace main method output
Main prints the value of x after static blocks run, which is 10 (last assignment). So output is "AB10".
Final Answer:
AB10 -> Option A
Quick Check:
Static blocks run in order, last x=10 [OK]
Hint: Static blocks run top to bottom before main [OK]
Common Mistakes:
Assuming static blocks run after main
Confusing order of static blocks
Expecting x to be 5 instead of 10
4. Identify the error in the following code snippet:
class Example {
static {
System.out.println("Start");
}
static void block() {
System.out.println("Inside method");
}
}
medium
A. No error, code is valid
B. Static block must have a method name
C. Static block cannot contain print statements
D. Static block cannot be followed by a static method
Solution
Step 1: Check static block rules
Static blocks can contain code like print statements and do not require a method name.
Step 2: Verify static method declaration
Static methods can appear after static blocks without any issue.
Final Answer:
No error, code is valid -> Option A
Quick Check:
Static blocks and methods can coexist [OK]
Hint: Static blocks can have code; methods are separate [OK]
Common Mistakes:
Thinking static blocks need method names
Assuming print statements are invalid in static blocks
Believing static blocks and methods conflict
5. Consider this Java class:
class Config {
static int value;
static {
value = 100;
System.out.print("Init1-");
}
static {
value += 50;
System.out.print("Init2-");
}
static {
if (value > 100) {
value = 200;
System.out.print("Init3-");
}
}
public static void main(String[] args) {
System.out.print(value);
}
}
What is the output when this program runs?
hard
A. Init2-Init3-200
B. Init1-Init2-150
C. Init1-Init3-200
D. Init1-Init2-Init3-200
Solution
Step 1: Trace static blocks in order
First block sets value=100 and prints "Init1-". Second adds 50 (value=150) and prints "Init2-". Third checks if value>100 (true), sets value=200 and prints "Init3-".
Step 2: Check main output
Main prints the final value, which is 200 after all static blocks run.
Final Answer:
Init1-Init2-Init3-200 -> Option D
Quick Check:
Static blocks run sequentially, final value=200 [OK]
Hint: Static blocks run top to bottom, last changes persist [OK]
Common Mistakes:
Ignoring the condition in third static block
Assuming static blocks run in random order
Forgetting value updates in each block
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.