जावा में ऑटोबॉक्सिंग और अनबॉक्सिंग क्या है?

Feb 19 2023
ऑटोबॉक्सिंग: ऑटोबॉक्सिंग जावा में एक विशेषता है जो आदिम डेटा प्रकार को संबंधित रैपर क्लास ऑब्जेक्ट में स्वचालित रूप से परिवर्तित करती है। उदाहरण के लिए, एक इंट को पूर्णांक में बदलना, एक डबल को एक डबल में बदलना, और इसी तरह।

एक यूटोबॉक्सिंग :

ऑटोबॉक्सिंग जावा में एक विशेषता है जो स्वचालित रूप से आदिम डेटा प्रकार को संबंधित आवरण वर्ग वस्तु में परिवर्तित करती है। उदाहरण के लिए, एक इंट को पूर्णांक में बदलना, एक डबल को एक डबल में बदलना, और इसी तरह।

ऑटोबॉक्सिंग का सबसे सरल उदाहरण है:

वर्ण च = 'सी'

जहां 'सी' एक आदिम प्रकार (चार) है जो स्वचालित रूप से संबंधित रैपर वर्ग (चरित्र) में परिवर्तित हो जाता है।

कोडिंग प्रथाओं के दौरान यह कहाँ उपयोगी हो सकता है?

ऑटोबॉक्सिंग सूची के साथ उपयोगी है (जैसे ऐरेलिस्ट, लिंक्डलिस्ट, आदि)। ArrayList का उदाहरण लेते हैं।

जैसा कि हम जानते हैं कि ArrayList में केवल एक ऑब्जेक्ट होता है, एक प्रिमिटिव डेटाटाइप नहीं, जिसका अर्थ है कि हम रैपर क्लास के ऑब्जेक्ट को स्टोर कर सकते हैं, लेकिन हम एक ArrayList के अंदर प्रिमिटिव डेटा टाइप को स्टोर नहीं कर सकते। उदाहरण के लिए ArrayList<Integer> arr = new ArrayList<Integer>() ; यह मान्य है। परंतु ArrayList<int> arr = new ArrayList<int>() ; यह मान्य नहीं है।

आइए नीचे लिखे कोड स्निपेट पर विचार करें।

ऑटोबॉक्सिंग की व्याख्या करना (चित्र 1. क)

यद्यपि हम पूर्णांक वस्तुओं के बजाय एक आदिम प्रकार के रूप में int मान जोड़ते हैं, कोड सफलतापूर्वक संकलित करता है और संकलन समय त्रुटि उत्पन्न नहीं करता है। क्योंकि JVM कंपाइलर पिछले कोड को निम्न कोड में परिवर्तित करता है:

संकलन के दौरान संकलक चित्र 1. a के कोड को कैसे परिवर्तित करता है (चित्र 1. b)

यहां, ऐड ऑपरेशन के दौरान इंट प्रिमिटिव टाइप को इंटीजर रैपर क्लास में बदलने को ऑटोबॉक्सिंग कहा जाता है।

अनबॉक्सिंग :

अनबॉक्सिंग जावा में एक विशेषता है जो स्वचालित रूप से रैपर क्लास ऑब्जेक्ट को संबंधित आदिम डेटा प्रकार में परिवर्तित करती है। उदाहरण के लिए, एक इंटीजर को एक इंट, एक डबल को एक डबल, और इसी तरह परिवर्तित करना।

अनबॉक्सिंग ऑटोबॉक्सिंग की रिवर्स प्रक्रिया है।

कोडिंग प्रथाओं के दौरान यह कहाँ उपयोगी हो सकता है?

अनबॉक्सिंग प्रोग्रामर्स की मदद करता है, क्योंकि यह डेटा संरचना पर अंकगणितीय संचालन जैसे कुछ ऑपरेशन करना आसान बनाता है जो रैपर क्लास ऑब्जेक्ट जैसे लिस्ट को स्टोर करता है। एक उदाहरण के लिए :

अनबॉक्सिंग की व्याख्या करना (चित्र 2. क)

किसी सूची (arr) के अंदर संग्रहीत कठिन मान पूर्णांक प्रकार के होते हैं, जबकि हम उन मानों को int प्रकार चर कुल में जोड़ रहे हैं, पूर्णांक मान स्वचालित रूप से int में परिवर्तित हो जाते हैं। जिससे एक प्रोग्रामर के लिए अंकगणितीय ऑपरेशन करना आसान हो जाएगा।

कोड सफलतापूर्वक संकलित करता है और संकलन समय त्रुटि उत्पन्न नहीं करता है। क्योंकि JVM कंपाइलर पिछले कोड को निम्न कोड में परिवर्तित करता है:

कंपाइलर अंजीर के कोड को कैसे परिवर्तित करता है 2. a संकलन के दौरान (चित्र 2. b)

यहाँ, int (आदिम प्रकार) को पूर्णांक (रैपर क्लास ऑब्जेक्ट) में बदलने को अनबॉक्सिंग कहा जाता है।

निम्न तालिका सहायक है क्योंकि यह आदिम डेटा प्रकार को इसके संबंधित आवरण वर्ग के साथ दिखाती है।

प्रिमिटिव टाइप और रैपर क्लास के बीच एसोसिएशन टेबल