क्लास लोडिंग (लोडिंग, लिंकिंग और इनिशियलाइज़ेशन) के शुरुआती "चरण" के दौरान स्टेटिक फ़ील्ड्स को इनिशियलाइज़ किया जाता है , जिसमें स्टैटिक इनिशियलाइज़र्स और इसके स्टैटिक फ़ील्ड्स की इनिशियलाइज़ेशन शामिल होती हैं। स्थिर आरंभीकरण को एक पाठ क्रम में निष्पादित किया जाता है जैसा कि कक्षा में परिभाषित किया गया है।
उदाहरण पर विचार करें:
public class Test {
static String sayHello() {
return a;
}
static String b = sayHello(); // a static method is called to assign value to b.
// but its a has not been initialized yet.
static String a = "hello";
static String c = sayHello(); // assignes "hello" to variable c
public static void main(String[] arg) throws Throwable {
System.out.println(Test.b); // prints null
System.out.println(Test.sayHello()); // prints "hello"
}
}
Test.b प्रिंट करता है null
क्योंकि जब sayHello
स्टैटिक स्कोप में बुलाया गया था, तो स्टैटिक वेरिएबल a
को इनिशियलाइज़ नहीं किया गया था।