वर्ग क्षेत्रों के लिए कोई अंतर नहीं है। वे null
ऑब्जेक्ट के लिए डिफ़ॉल्ट रूप से, संख्यात्मक मान के लिए 0 और false
बूलियन के लिए हैं।
विधियों में घोषित चर के लिए - जावा को उन्हें आरंभिक बनाने की आवश्यकता होती है। जब वे एक्सेस कर रहे हों, तो उन्हें इनिशियलाइज़ न करना एक कंपाइल टाइम एरर का कारण बनता है।
क्या कारण है? वर्ग फ़ील्ड को किसी भी विधि द्वारा संशोधित किया जा सकता है। किसी भी क्रम में विधि को लागू किया जाता है। सभी गैर-निजी क्षेत्रों को अन्य वर्गों और / या उस वर्ग का विस्तार करने वाले वर्गों द्वारा संशोधित किया जा सकता है। इसलिए, एक असिंचित चर के बारे में सूचित करने का कोई मतलब नहीं है, क्योंकि इसे कई, कई जगहों पर सौंपा जा सकता है।
हालांकि, तरीकों के अंदर चर स्थानीय हैं और केवल विधि के अंदर ही संशोधित किए जा सकते हैं। इसलिए यह संभव गलतियों को इंगित करने के लिए संभव और तर्कसंगत दोनों है। और कंपाइलर इसे करने की कोशिश करता है। यदि यह जानता है कि फ़ील्ड को प्रारंभ नहीं किया गया है, तो यह एक त्रुटि दिखाएगा, क्योंकि यही वह है जो आप चाहते हैं। यदि यह सुनिश्चित नहीं है - यह एक चेतावनी देगा, ताकि आप सुनिश्चित कर सकें।
public static class Test {
Date a; // ok
Date b = null; // ok
public void test() {
Date c;
Date d = null;
System.out.println(a.toString());
System.out.println(b.toString());
System.out.println(c.toString()); // error
System.out.println(d.toString()); // warning
}
}