जावा में अप्रारंभीकृत वेरिएबल और सदस्य
निम्नलिखित स्निपेट पर विचार करें:
public class TestClass { private String a; private String b; public TestClass() { a = "initialized"; } public void doSomething() { String c; a.notify(); // This is fine b.notify(); // This is fine - but will end in an exception c.notify(); // "Local variable c may not have been initialized" } }
यद्यपि "बी" और "सी" दोनों अप्रारंभीकृत हैं, कंपाइलर "सी" के लिए एक संकलन-समय त्रुटि उत्पन्न करता है, लेकिन "बी" के लिए नहीं। यह अंतर इंस्टेंस वेरिएबल्स और स्थानीय वेरिएबल्स को प्रारंभ करने के लिए भाषा के नियमों से उत्पन्न होता है।
ऑब्जेक्ट प्रकार (जैसे "ए" और "बी") के इंस्टेंस वेरिएबल्स को स्पष्ट रूप से प्रारंभ नहीं किए जाने पर डिफ़ॉल्ट रूप से शून्य में प्रारंभ किया जाता है। यही कारण है कि "b.notify()" तक पहुंचने से तत्काल त्रुटि नहीं होती है, क्योंकि यह प्रभावी रूप से "null.notify()" के बराबर है। हालाँकि, जब कोड निष्पादित होता है तो यह एक्सेस अंततः एक NullPointerException को ट्रिगर करेगा।
इसके विपरीत, ऑब्जेक्ट प्रकार के स्थानीय चर डिफ़ॉल्ट रूप से प्रारंभ नहीं किए जाते हैं। "सी" जैसे अप्रारंभीकृत स्थानीय चर तक पहुंचने का प्रयास करने पर सीधे संकलन-समय त्रुटि उत्पन्न होती है। यह सख्त आवश्यकता यह सुनिश्चित करती है कि उपयोग किए जाने से पहले स्थानीय चर को हमेशा ठीक से प्रारंभ किया जाता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3