"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > स्ट्रिंग कॉन्स्टेंट पूल: शाब्दिक अस्तित्व में होने पर भी \"नया\" एक नया स्ट्रिंग ऑब्जेक्ट क्यों बनाता है?

स्ट्रिंग कॉन्स्टेंट पूल: शाब्दिक अस्तित्व में होने पर भी \"नया\" एक नया स्ट्रिंग ऑब्जेक्ट क्यों बनाता है?

2024-11-06 को प्रकाशित
ब्राउज़ करें:455

String Constant Pool: Why Does \

स्ट्रिंग कॉन्स्टेंट पूल: एक गहन परीक्षा

जावा में स्ट्रिंग अक्षर मेमोरी उपयोग को अनुकूलित करने और प्रदर्शन को बढ़ाने के लिए पूल किए गए हैं। इसका मतलब यह है कि जब एक स्ट्रिंग अक्षर सामने आता है, तो कंपाइलर उसी मान के साथ मौजूदा स्ट्रिंग ऑब्जेक्ट के लिए स्ट्रिंग कॉन्स्टेंट पूल की जांच करता है। यदि पाया जाता है, तो संदर्भ को मौजूदा ऑब्जेक्ट पर निर्देशित किया जाता है, एक नए के निर्माण से परहेज किया जाता है। इंटर्निंग का. इसे स्पष्ट करने के लिए, आइए निम्नलिखित कथनों की जाँच करें:

"जब कंपाइलर एक स्ट्रिंग अक्षरशः का सामना करता है, तो यह यह देखने के लिए पूल की जाँच करता है कि क्या एक समान स्ट्रिंग पहले से मौजूद है।"
  • "इन 'नए' के ​​मामले में, स्ट्रिंग अक्षर के संदर्भ अभी भी स्थिर तालिका में रखे गए हैं, लेकिन जब आप 'नए' का उपयोग करते हैं, तो जेवीएम स्थिरांक से एक का उपयोग करने के बजाय, रन-टाइम पर एक नया स्ट्रिंग ऑब्जेक्ट बनाने के लिए बाध्य होता है तालिका। इसका मतलब यह है कि पूल में एक समतुल्य स्ट्रिंग के अस्तित्व के बावजूद, "नया" ऑपरेटर इसे बायपास करता है और नॉनपूल मेमोरी में एक नया ऑब्जेक्ट आवंटित करता है।
  • इसे स्पष्ट करने के लिए, निम्नलिखित उदाहरण पर विचार करें:
स्ट्रिंग एक = नया स्ट्रिंग('परीक्षण'); स्ट्रिंग दो = "परीक्षण"; System.out.println(one.equals(two)); // सत्य System.out.println(एक == दो); // false

जैसा कि अपेक्षित था, "एक" और "दो" दोनों का मान "परीक्षण" है, लेकिन "==" तुलना झूठी आती है क्योंकि वे अलग-अलग स्ट्रिंग ऑब्जेक्ट को संदर्भित करते हैं। ऐसा इसलिए है क्योंकि "नया" का उपयोग "एक" के लिए एक नई स्ट्रिंग ऑब्जेक्ट के निर्माण को मजबूर करता है, भले ही स्ट्रिंग शाब्दिक "परीक्षण" पहले से ही पूल में मौजूद है।

संक्षेप में, स्ट्रिंग कॉन्स्टेंट पूल अनुकूलन करता है स्ट्रिंग शाब्दिकों को इंटर्न करके मेमोरी का उपयोग। हालाँकि, "नया" का उपयोग पूल को बायपास करता है और नॉनपूल मेमोरी में एक नया स्ट्रिंग ऑब्जेक्ट बनाता है। इसके परिणामस्वरूप समान मान लेकिन अलग-अलग संदर्भ वाले दो अलग-अलग स्ट्रिंग ऑब्जेक्ट होते हैं।
            
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3