1. रैपर प्रकारों की सूची
आप जानते हैं कि जावा में 8 आदिम प्रकार हैं, जो ऐसे प्रकार हैं जो वर्ग नहीं हैं। एक ओर, यह अच्छा है - वे सरल हैं और बहुत कम जगह लेते हैं। दूसरी ओर, कभी-कभी कक्षाएं वही होती हैं जिनकी हमें आवश्यकता होती है। आपको अगले पाठ में पता चलेगा कि वास्तव में ऐसा क्यों है।
तो क्या कर सकते हैं?
जावा के पांचवें संस्करण से शुरू होकर, प्रत्येक आदिम प्रकार ने एक जुड़वां वर्ग प्राप्त किया। ऐसा प्रत्येक वर्ग एक विशिष्ट प्रकार के मान के साथ एक एकल फ़ील्ड संग्रहीत करता है। इन वर्गों को आवरण प्रकार कहा जाता है , क्योंकि वे कक्षाओं में आदिम मूल्यों को लपेटते हैं।
यहाँ इस प्रकार की एक सूची है। क्या आप किसी को जानते हैं?
| आदिम प्रकार | आवरण वर्ग |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
प्रिमिटिव टाइप के नाम लोअरकेस लेटर से शुरू होते हैं, लेकिन रैपर क्लासेस के नाम अपरकेस लेटर से शुरू होते हैं। कुछ वर्ग के नाम भी थोड़े लंबे हैं: Integerइसके बजाय intऔर Characterइसके बजाय char।
आवरण वर्ग की सभी वस्तुएँ अपरिवर्तनीय ( अपरिवर्तनीय ) हैं।
वर्ग के लिए सरलीकृत कोड Integerकुछ इस तरह दिखता है:
| कोड | टिप्पणी |
|---|---|
|
वेरिएबल कंस्ट्रक्टर विधि एक मान लौटाती है स्थैतिक विधि एक चर Integerके लिए एक नई वस्तु बनाती हैint |
2. एक को intएक में बदलनाInteger
रैपर प्रकारों को उनके आदिम भाई-बहनों के समकक्ष माना जाता है: आप आसानी से एक रैपर ऑब्जेक्ट बना सकते हैं जो एक आदिम प्रकार से मेल खाती है।
आइए एक उदाहरण के रूप में int प्रकार का उपयोग यह विश्लेषण करने के लिए करें कि आदिम प्रकार उनके संबंधित आवरण प्रकार के साथ कैसे इंटरैक्ट करते हैं। intएक से एक और इसके विपरीत में कनवर्ट करने के लिए कोड Integerइस तरह दिखेगा:
inta को a में बदलने के लिए Integer, आपको यह कोड लिखना होगा:
Integer name = new Integer(value);
कहाँ nameएक चर का नाम है Integer, और valueलपेटा हुआ intमान है।
उदाहरण:
| कोड | टिप्पणी |
|---|---|
|
|
|
|
|
और a को Integera में बदलने के लिए int, आपको यह कोड लिखना होगा:
int name = variable.intValue();
कहाँ nameएक चर का नाम है int, और एक वस्तु variableके लिए एक संदर्भ है ।Integer
उदाहरण:
| कोड | टिप्पणी |
|---|---|
|
|
|
|
|
|
|
|
3. ऑटोबॉक्सिंग और अनबॉक्सिंग
लेकिन Integerटाइप के साथ सरल ऑपरेशन भी लिखना आसान नहीं है।
जैसा कि हमने पहले कहा, Integerप्रकार अपरिवर्तनीय ( अपरिवर्तनीय ) है। Integerएक नए मूल्य के साथ एक वस्तु बनाने के लिए int, आपको स्पष्ट रूप से एक नई Integerवस्तु बनाने की आवश्यकता है। intउस ने कहा, किसी वस्तु के अंदर संग्रहीत का मान प्राप्त करना आसान है Integer- बस intValue()विधि को कॉल करें।
उदाहरण:
| कोड | विवरण |
|---|---|
|
5किसी Integerवस्तु में लपेटें वस्तु से मूल्य प्राप्त करें एक नई वस्तु बनाएं (10 के बराबर) IntegerInteger |
यह बल्कि बोझिल कोड है, क्या आपको नहीं लगता?
जावा के रचनाकारों ने ऐसा सोचा था, इसलिए उन्होंने संकलक को सिखाया कि इन कार्यों को स्वचालित रूप से कैसे किया जाए। inta से a में स्वचालित रूपांतरण को ऑटोबॉक्सिंग (स्वचालित रूप से एक बॉक्स में मूल्य डालना) Integerकहा जाता है , और रिवर्स ऑपरेशन (an को a में परिवर्तित करना ) को अनबॉक्सिंग कहा जाता है ।Integerint
| तुम्हारा कोड | संकलक क्या देखता है |
|---|---|
|
|
|
|
|
|
ऑटोबॉक्सिंग और अनबॉक्सिंग के लिए धन्यवाद, आप intएक वैरिएबल को सुरक्षित रूप से असाइन कर सकते हैं Integerऔर इसके विपरीत। intआप और Integerप्रकार के बीच अंतर किए बिना किसी भी जटिलता के भाव लिख सकते हैं ।
उदाहरण:
| कोड | संकलक क्या उत्पन्न करेगा |
|---|---|
|
|
|
|
4. रैपर चर की तुलना करना
ऑटोबॉक्सिंग और अनबॉक्सिंग सरल और पारदर्शी प्रक्रियाएं हैं। हम new Integer()आवश्यकतानुसार कथनों का उपयोग करते हैं, और intValue()आवश्यकतानुसार विधि को कॉल करते हैं।
प्रोग्रामर, आपके लिए सब कुछ अच्छा और आसान काम करता है। ध्यान रखें कि यदि आप a Integerऔर an की तुलना करते हैं Integer, तो तुलना संदर्भ पर आधारित होती है न कि मूल्यों पर।
| कोड | कंसोल आउटपुट |
|---|---|
|
|
|
|
और चर मानों को संग्रहीत नहीं करते हैं a। वे वस्तुओं के संदर्भों को संग्रहीत करते हैं। इसका मतलब यह है कि यह याद रखना महत्वपूर्ण है कि उनकी सही तुलना कैसे करें:bint
| गलत | सही |
|---|---|
|
|
GO TO FULL VERSION