जब आप एक सरणी बनाते हैं तो वह संदर्भ की एक सरणी है - और शुरू में उन सभी संदर्भों को अशक्त हैं, इसलिए वे किसी भी उदाहरणों Dog
की की बात नहीं कर रहे हैं। तुम्हें पता है, एक उदाहरण बनाने की जरूरत इस तरह:
Dog fido = new Dog();
// Other code here
dogsList[4] = fido;
dogsList[4].setSize(4);
एक छोटी सी पृष्ठभूमि
में से एक:
Dog[] dogsList = new Dog[7];
dogsList[4] = new Dog();
dogsList[4].setSize(4);
वैकल्पिक रूप से, आप पहले से ही कहीं और से कोई Dog
के लिए एक संदर्भ हो सकता है समझने के लिए सबसे महत्वपूर्ण चीजें ऑब्जेक्ट्स और संदर्भ के बीच अंतर है। एक संदर्भ किसी ऑब्जेक्ट को प्राप्त करने का एक तरीका है - और एकाधिक संदर्भ एक ही ऑब्जेक्ट को संदर्भित कर सकते हैं। उदाहरण के लिए:
Dog x = new Dog();
Dog y = x;
x.setName("Fido");
System.out.println(x.getName()); // Will print "Fido"
यहाँ, x
और y
चरों के मान वे कुत्तों को संदर्भ (या अशक्त है, जो मैं एक मिनट में पर आया हूँ) कर रहे हैं कुत्तों नहीं हैं ...। लाइन
Dog y = x;
x
के मूल्य के y
का प्रारंभिक मूल्य सेट - तो दो चर एक ही Dog
वस्तु को देखें।
अब null
एक विशेष संदर्भ मान है जो किसी भी ऑब्जेक्ट का संदर्भ नहीं देता है। NullPointerException
फेंक दिया गया है यदि आप dereference एक शून्य संदर्भ (आमतौर पर .
ऑपरेटर के साथ, लेकिन सरणी अनुक्रमण जैसी चीजों के साथ) का प्रयास करते हैं।
सरणी
जब आप एक सरणी बनाने के लिए, सभी तत्वों को तुरंत प्रकार के लिए डिफ़ॉल्ट मान के साथ भर जाते हैं। boolean
के लिए संख्यात्मक प्रकार 0 के लिए, यह झूठा है, और char
के लिए यह वर्ण 0 है। संदर्भ प्रकार (कक्षाओं) के लिए यह शून्य संदर्भ है।तो अगर आप ऐसा करते हैं जब:
Dog[] dogsList = new Dog[7];
कि के बराबर है:
Dog[] dogsList = { null, null, null, null, null, null, null };
अपने मूल कोड में
तो, dogsList[4]
का मूल्य रिक्त है। फिर आप संदर्भित ऑब्जेक्ट पर setSize
पर कॉल करने के लिए शून्य संदर्भ को अस्वीकार करने का प्रयास करें ... और बैंग! आपको NullPointerException
मिलता है।
इस प्रश्न में बहुत सारी महत्वपूर्ण अवधारणाएं शामिल हैं, इसलिए कृपया किसी भी विशिष्ट बिंदु पर अधिक जानकारी मांगने के लिए स्वतंत्र महसूस करें।
धन्यवाद @ जोन स्कीट, आपका उत्तर वास्तव में सहायक था! – Hazmat