स्टेटिक ब्लॉक तब निष्पादित होता है जब क्लासलोडर क्लास को लोड करता है। एक स्टेटिक ब्लॉक main() मेथड से पहले आह्वान किया जाता है।
उदाहरण
class Demo {
static int val_1;
int val_2;
static {
val_1 = 67;
System.out.println("स्टेटिक ब्लॉक को कॉल किया गया है।");
}
}
public class Main {
public static void main(String args[]) {
System.out.println(Demo.val_1);
}
}
आउटपुट
स्टेटिक ब्लॉक को कॉल किया गया है।
67
व्याख्या: Demo नामक एक क्लास में एक स्टेटिक इंटीजर मान और एक सामान्य इंटीजर मान होता है। एक स्टेटिक ब्लॉक में, एक मान परिभाषित किया जाता है, और मुख्य क्लास में, Demo क्लास का एक इंस्टेंस बनाया जाता है और वहां से स्टेटिक इंटीजर को एक्सेस किया जाता है।
स्टेटिक ब्लॉक की मुख्य विशेषताएं:
- क्लास लोडिंग पर ठीक एक बार निष्पादित होता है
- किसी भी कंस्ट्रक्टर या main() से पहले चलता है
- स्टेटिक फील्ड्स को आरंभ करने के लिए उपयोग किया जाता है जिनके लिए तर्क की आवश्यकता होती है
- एक क्लास में एकाधिक स्टेटिक ब्लॉक्स हो सकते हैं (क्रम मायने रखता है)
- इसमें 'this' या 'super' का उपयोग नहीं कर सकते
- केवल स्टेटिक मेंबर्स को एक्सेस कर सकते हैं
उपयोग केस:
public class DatabaseDriver {
static {
// JDBC ड्राइवर रजिस्टर करें
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
throw new RuntimeException("ड्राइवर नहीं मिला", e);
}
}
// बाकी क्लास...
}
स्टेटिक ब्लॉक vs इंस्टेंस इनिशियलाइज़र:
class Example {
static { System.out.println("स्टेटिक ब्लॉक"); } // 1. क्लास लोड पर
{ System.out.println("इंस्टेंस इनिशियलाइज़र"); } // 2. प्रत्येक new() पर
Example() { System.out.println("कंस्ट्रक्टर"); } // 3. प्रत्येक new() पर
}