2010-12-16 15 views
31

मैंने पढ़ा है कि nullinstanceof कुछ भी नहीं है, लेकिन दूसरी तरफ जावा में सब कुछ Object कक्षा बढ़ाता है।जावा - 'ऑब्जेक्ट' का उदाहरण 'शून्य' है?

+4

आदिम प्रकार ('int', 'bool', आदि)' ऑब्जेक्ट 'के उपप्रकार नहीं हैं। –

+0

संभावित डुप्लिकेट http://stackoverflow.com/questions/519631/is-null-a-java-keyword –

उत्तर

56

नहीं, यह reference है। शून्य एक ऑब्जेक्ट

String s = null; 

System.out.println(s instanceof Object); // false 
+0

@ क्रिस्टियन स्कैनर 'स्ट्रिंग एस =" "; 'एक स्ट्रिंग ऑब्जेक्ट का संदर्भ देता है जिसका आंतरिक सामग्री (एक चार सरणी) खाली है। दूसरी तरफ, 'स्ट्रिंग एस = नल' कुछ भी संदर्भ नहीं दे रहा है। –

+0

@ हडसनपेना मगलहास तो क्या? यह कुछ भी 'वास्तविक' का संदर्भ नहीं दे सकता है बल्कि इसके बजाय कुछ भी इंगित नहीं कर सकता है, लेकिन फिर भी यह एक संदर्भ है। –

3

नल का अर्थ है कि आपके पास किसी ऑब्जेक्ट का संदर्भ नहीं है।

Object o = null; 

ओ संदर्भ है लेकिन इसके लिए कोई ऑब्जेक्ट संदर्भित नहीं है और इसके लिए कोई स्मृति आवंटित नहीं है।

o = new Object(); 

ओ अभी भी एक संदर्भ है और पता जहां वस्तु स्मृति

2

नहीं में स्थित है रखती है, null एक वस्तु नहीं है। यह एक शाब्दिक है जिसका अर्थ है कि एक चर किसी वस्तु का संदर्भ नहीं देता है।

8

एक शब्द में, नहीं।

पीटर Norvig के Java IAQ पतों कुछ विस्तार (विशेष रूप से "Q: Is null an Object?")

+0

महान संदर्भ के लिए धन्यवाद, जिसे मैं अनजान था। – JDelage

+0

बस एक त्वरित रूप से देखा गया था और वास्तव में एक एंकर है जो आईएचक्यू में सीधे उत्तर में कूदता है, इसलिए मैंने आपका लिंक – mikej

+0

@ माइकज धन्यवाद अपडेट किया है - कौन जानता है कि मैंने इसे कैसे नजरअंदाज किया। – NPE

5

वहाँ भी एक विशेष अशक्त प्रकार, अभिव्यक्ति अशक्त की प्रकार है, जो कोई नाम नहीं है है में यह सवाल। चूंकि शून्य प्रकार में नाम नहीं है, इसलिए शून्य प्रकार के चर घोषित करना या को शून्य प्रकार पर डालना असंभव है। शून्य संदर्भ शून्य प्रकार की अभिव्यक्ति का एकमात्र संभावित मूल्य है। शून्य संदर्भ हमेशा किसी भी संदर्भ प्रकार पर डाला जा सकता है। अभ्यास में, प्रोग्रामर अशक्त प्रकार अनदेखा कर सकते हैं और सिर्फ बहाना है कि रिक्त महज एक विशेष शाब्दिक है कि किसी भी संदर्भ प्रकार

Java Language Specification

1

JLS के रूप में कहते हैं की हो सकता है, null की है शून्य प्रकार और यह एक संदर्भ प्रकार नहीं है। हालांकि यह उन स्थितियों में प्रयोग योग्य है जहां संदर्भ प्रकार का मूल्य अपेक्षित है (मान वास्तव में प्रकार बीजगणित में "नीचे" है)।

0

उम्मीद है कि इस उदाहरण अपने संदेह को साफ करता है:

public void printObject(Object object) { 
    System.out.println("object referred"); 
} 

public void printObject(double[] doubleArray) { 
    System.out.println("Array of type double"); 
} 

public static void main(String[] args) { 
    JavaNullObjectTest javaNullObjectTest = new JavaNullObjectTest(); 

    javaNullObjectTest.printObject(null); //Array of type double 

    javaNullObjectTest.printObject((Object)null); //object referred 
} 

हम लेकिन, परिवर्तित कर सकते हैं एक 'अशक्त' आपत्ति उठाने का।

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