2015-11-24 16 views
5

जावा में बॉक्सिंग और ऑटोबॉक्सिंग के बीच क्या अंतर है? कई जावा प्रमाणन पुस्तकें दो ऐसी शर्तों का उपयोग करती हैं। क्या वे बॉक्सिंग के समान चीज का उल्लेख करते हैं?जावा में बॉक्सिंग और ऑटोबॉक्सिंग के बीच क्या अंतर है?

+0

यह अनबॉक्सिंग है, बॉक्सिंग – Bikku

+1

@UUIIUI नहीं – fge

+2

@ टुनकी वेल, जरूरी नहीं है।इसे मुक्केबाजी माना जा सकता है: 'इंटीजर i = नया इंटीजर (1);' और यह ऑटोबॉक्सिंग 'इंटीजर i = 1; '। हालांकि यह सिर्फ अप्रासंगिक अर्थशास्त्र है। – Kayaman

उत्तर

10

मुक्केबाजी (यानी, int से Integer करने के लिए) तंत्र है; ऑटोबॉक्सिंग कंपाइलर की विशेषता है जिसके द्वारा यह आपके लिए मुक्केबाजी कोड उत्पन्न करता है।

उदाहरण के लिए

, यदि आप कोड में लिखें:

// list is a List<Integer> 
list.add(3); 

तो संकलक स्वचालित रूप से मुक्केबाजी कोड आपके लिए बनाए गए; "अंतिम परिणाम" कोड में होगा:

list.add(Integer.valueOf(3)); 

क्यों Integer.valueOf() और नहीं new Integer() के बारे में एक नोट: मूल रूप से, क्योंकि JLS तो कहते हैं :) का हवाला देते हुए section 5.1.7:

मूल्य हैं पी बॉक्सिंग किया गया है रेंज \ u0000 से \ u007f, या एक int या लघु संख्या -128 और 127 (समावेशी) के बीच, फिर r1 और r2 परिणाम होने दें किसी भी दो बॉक्स के पी 0 के रूपांतरण रूपांतरण। यह हमेशा ऐसा होता है कि r1 == r2

और यदि आप "मात्र" निर्माता का उपयोग करते हैं तो आप इस आवश्यकता को लागू नहीं कर सकते हैं। एक कारखाना विधि, जैसे Integer.valueOf(), कर सकते हैं।

+0

पूरी तरह से डाल दिया। .. –

+0

अच्छे उदाहरण के साथ .. :) –

5

मेरी समझ में, "बॉक्सिंग" का अर्थ है "स्पष्ट रूप से एक प्राचीन मूल्य के चारों ओर एक रैपर का निर्माण"। उदाहरण के लिए:

int x = 5; 
Integer y = new Integer(x); //or Integer.valueOf(x); 

इस बीच, "autoboxing" का अर्थ है "परोक्ष एक आदिम मूल्य के चारों ओर एक आवरण का निर्माण"। उदाहरण के लिए:

Integer x = 5; 
0

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

ref...

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