स्टेटिक फ़ील्ड को initialization कक्षा लोडिंग (लोडिंग, लिंकिंग और प्रारंभिकरण) के "चरण" के दौरान शुरू किया गया है जिसमें स्थैतिक प्रारंभकर्ता और इसके स्थिर फ़ील्ड के प्रारंभिकरण शामिल हैं। कक्षा में परिभाषित अनुसार स्थिर प्रारंभकर्ताओं को एक पाठ क्रम में निष्पादित किया जाता है।
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
आरंभ नहीं किया गया था:
उदाहरण पर विचार करें।
स्थिर प्रारंभकर्ता ब्लॉकों के लिए इसी तरह का उपयोग करके प्रारंभ करने में (यदि वह पहले आरंभ नहीं किया गया है) एक वर्ग के लिए मजबूर भी संभव है: http://stackoverflow.com/questions/ 2007666/इन-ऑर्डर-डू-स्टेटिक-प्रारंभिक-ब्लॉक-इन-जावा-रन –