निम्नलिखित कोड के लिए मनका स्पष्टीकरण:
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
referToSample.append("B");
System.out.println(sample);
यह प्रिंट करेगा B
ताकि साबित होता है sample
और referToSample
ऑब्जेक्ट्स एक ही मेमोरी संदर्भ को संदर्भित करते हैं।
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
sample.append("A");
referToSample.append("B");
System.out.println(referToSample);
यह प्रिंट करेगा AB
जो भी साबित होता है।
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
referToSample = null;
referToSample.append("A");
System.out.println(sample);
जाहिर है यह फेंक देगा NullPointerException
क्योंकि मैं append
एक अशक्त संदर्भ पर कॉल करने की कोशिश कर रहा हूं ।
StringBuilder sample = new StringBuilder();
StringBuilder referToSample = sample;
referToSample = null;
sample.append("A");
System.out.println(sample);
इसलिए यहाँ मेरा प्रश्न है, अंतिम कोड का नमूना क्यों नहीं फेंका जा NullPointerException
रहा है क्योंकि जो मैं पहले दो उदाहरणों से देख रहा हूँ और समझ रहा हूँ वह यह है कि यदि दो वस्तुएं एक ही वस्तु का जिक्र करती हैं तो यदि हम किसी भी मूल्य को बदलते हैं तो यह अन्य को भी प्रतिबिंबित करेगा क्योंकि दोनों ही इंगित कर रहे हैं एक ही स्मृति संदर्भ। तो वह नियम यहां क्यों नहीं लागू हो रहा है? अगर मैं null
referToSample को असाइन करता हूं तो नमूना भी अशक्त होना चाहिए और इसे NullPointerException को फेंक देना चाहिए लेकिन यह एक नहीं फेंक रहा है, क्यों?
sample
अभी भी हैsample
। आप ही बदल गएreferToSample
।