2013-05-22 8 views
64

में प्रारंभ किया गया मैं जावा में काम कर रहा हूं।अनन्य ऑब्जेक्ट बनाम ऑब्जेक्ट NULL

मैं आमतौर पर सेटअप कुछ इस तरह के रूप वस्तुओं:

public class Foo { 
    private SomeObject someName; 

    // do stuff 

    public void someMethod() { 
     if (this.someName != null) { 
      // do some stuff 
     } 
    } 
} 

सवाल है: इस उदाहरण में someNamenull करने, बराबर की जाती है जैसे-में मैं reliably for all objects अशक्त की जाँच अप्रारंभीकृत वस्तुओं सटीक हो जाएगा मान सकते हैं?

उत्तर

85

सही, संदर्भ प्रकार के स्थैतिक और उदाहरण सदस्यों दोनों स्पष्ट रूप से प्रारंभ नहीं किए गए हैं, वे जावा द्वारा null पर सेट हैं। सर नियम सदस्यों पर एक ही नियम लागू होता है।

Java Language Specification से, खंड 4.12.5: चर

एक कार्यक्रम में हर चर एक मान होना चाहिए की

प्रारंभिक मान से पहले अपने मूल्य प्रयोग किया जाता है:

प्रत्येक वर्ग वेरिएबल, इंस्टेंस वैरिएबल, या सर घटक को डिफ़ॉल्ट मान के साथ प्रारंभ किया जाता है जब यह

बनाया गया है 10

[...] सभी संदर्भ प्रकारों के लिए, डिफ़ॉल्ट मान null है।

ध्यान दें कि उपर्युक्त नियम स्थानीय चर को बाहर करता है: उन्हें स्पष्ट रूप से प्रारंभ किया जाना चाहिए, अन्यथा प्रोग्राम संकलित नहीं होगा।

+0

यह कैसे लागू होता है, उदाहरण के लिए, 'char'? मैं 'char test कर सकता हूं; 'लेकिन' char test = null; ' – xorinzor

+1

@xorinzor आप' null' को' char' असाइन नहीं कर सकते क्योंकि यह एक आदिम प्रकार है। इसके अलावा आप 'टेस्ट टेस्ट' नहीं कर सकते हैं, बिना किसी विधि के 'टेस्ट' को निर्दिष्ट किए बिना। यदि आप चाहते हैं तो आप 'char test = 'a'' कर सकते हैं, या इसे' char test;' के रूप में छोड़ दें, '' 0'' का डिफ़ॉल्ट मान प्राप्त करने के लिए सदस्य घोषणा में। – dasblinkenlight

9

यदि Object संदर्भ घोषित किया गया है लेकिन तुरंत नहीं किया गया है, तो इसका मूल्य null है।

+7

केवल कक्षा के एक उदाहरण क्षेत्र के रूप में। –

+1

@SotiriosDelimanolis क्या आप कृपया विस्तृत कर सकते हैं? मैं सीखने की कोशिश कर रहा हूं :) – SnakeDoc

+5

@ स्नैकडॉक यदि आप किसी विधि निकाय में कोई ऑब्जेक्ट घोषित करते हैं, तो आप संकलन त्रुटि प्राप्त करेंगे यदि आप इसे प्रारंभ करने के बिना इसका उपयोग करने का प्रयास करते हैं। –

संबंधित मुद्दे