निम्नलिखित कोड के लिए मनका स्पष्टीकरण:
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रहा है क्योंकि जो मैं पहले दो उदाहरणों से देख रहा हूँ और समझ रहा हूँ वह यह है कि यदि दो वस्तुएं एक ही वस्तु का जिक्र करती हैं तो यदि हम किसी भी मूल्य को बदलते हैं तो यह अन्य को भी प्रतिबिंबित करेगा क्योंकि दोनों ही इंगित कर रहे हैं एक ही स्मृति संदर्भ। तो वह नियम यहां क्यों नहीं लागू हो रहा है? अगर मैं nullreferToSample को असाइन करता हूं तो नमूना भी अशक्त होना चाहिए और इसे NullPointerException को फेंक देना चाहिए लेकिन यह एक नहीं फेंक रहा है, क्यों?




sampleअभी भी हैsample। आप ही बदल गएreferToSample।