प्रश्न: 127 पर जावा के इंटीजर कॉन्स्टेंट पूल व्यवहार में विचलन
परिचय:
पूर्णांक स्थिरांक पूल जावा में एक तंत्र है जो सुधार के लिए सामान्य पूर्णांक मानों की कैशिंग को अनुकूलित करता है प्रदर्शन। हालाँकि, इस पूल का व्यवहार 127 पर परिवर्तन प्रदर्शित करता है, जिससे डेवलपर्स के बीच भ्रम पैदा होता है।
व्यवहार को समझना:
-128 से 127 तक के पूर्णांकों के लिए , जावा समान स्थिरांक को संदर्भित करने वाले चर के लिए समान संदर्भ की गारंटी देता है।
Integer i1 = 127; Integer i2 = 127; System.out.println(i1 == i2); // True
ऐसा इसलिए है क्योंकि ये मान स्थिर पूल में कैश किए गए हैं।
128 पर विचलन:
हालाँकि, जब पूर्णांक मान अधिक हो जाता है 127, व्यवहार बदलता है।
Integer i1 = 128; Integer i2 = 128; System.out.println(i1 == i2); // False
यह कार्यान्वयन अनुकूलन के कारण है। जबकि जेएलएस 127 तक के मूल्यों के लिए कैशिंग की गारंटी देता है, उस सीमा से परे, कार्यान्वयन मूल्यों को अलग तरीके से कैश करना चुन सकता है या बिल्कुल भी नहीं।
अतिरिक्त विचार:
यहां तक कि गारंटीकृत सीमा (-128 से 127) के भीतर, कैशिंग व्यवहार हमेशा विश्वसनीय नहीं होता है। उदाहरण के लिए, new Integer() का उपयोग करके निरंतर पूल को बायपास किया जा सकता है और नए संदर्भ बनाए जा सकते हैं।
Integer i1 = new Integer(127); Integer i2 = new Integer(127); System.out.println(i1 == i2); // False
निष्कर्ष:
127 पर इंटीजर स्थिरांक पूल का व्यवहार कार्यान्वयन अनुकूलन और जेएलएस द्वारा परिभाषित गारंटीकृत सीमा से उत्पन्न होता है। अप्रत्याशित परिणामों से बचने के लिए डेवलपर्स को व्यवहार में इस बदलाव के बारे में पता होना चाहिए।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3