हाय! तुम्ही आदिम प्रकारांशी आधीच चांगले परिचित आहात आणि त्यांच्याबरोबर थोडेसे काम केले आहे. प्रोग्रॅमिंगमध्ये (आणि विशेषतः जावा), प्रिमिटिव्हजचे बरेच फायदे आहेत: ते कमी मेमरी वापरतात (आणि अशा प्रकारे प्रोग्राम अधिक कार्यक्षम बनवतात) आणि मूल्यांची स्पष्टपणे वर्णन केलेली श्रेणी असते. तथापि, जावा शिकत असताना, आम्ही "जावामधील प्रत्येक गोष्ट एक वस्तू आहे" या मंत्राची वारंवार पुनरावृत्ती केली आहे. पण आदिम त्या शब्दांचा थेट विरोध करतात. ते वस्तू नाहीत. तर, आपले "सर्व काही एक वस्तू आहे" हे तत्व खोटे आहे का? वास्तविक, ते नाही. जावामध्ये, प्रत्येक आदिम प्रकाराला एक जुळे भाऊ, एक आवरण वर्ग असतो.

रॅपर क्लास म्हणजे काय?

रॅपर हा एक विशेष वर्ग आहे जो अंतर्गतरित्या आदिम संचयित करतो. परंतु हा वर्ग असल्यामुळे तुम्ही त्याची उदाहरणे तयार करू शकता. ते आदिम मूल्ये आंतरिकरित्या संग्रहित करतात, परंतु तरीही वास्तविक वस्तू आहेत. रॅपर वर्गाची नावे त्यांच्या संबंधित आदिमांच्या नावांसारखी (किंवा अगदी सारखीच) आहेत. म्हणून, ते लक्षात ठेवणे सोपे आहे.
आदिम डेटा प्रकारांसाठी रॅपर वर्ग
आदिम डेटा प्रकार रॅपर क्लासेस
int पूर्णांक
लहान लहान
लांब लांब
बाइट बाइट
फ्लोट तरंगणे
दुप्पट दुहेरी
चार वर्ण
बुलियन बुलियन
रॅपर ऑब्जेक्ट इतर कोणत्याही ऑब्जेक्ट प्रमाणेच तयार केले जातात:

public static void main(String[] args) {

   Integer i = new Integer(682);
  
   Double d = new Double(2.33);
  
   Boolean b = new Boolean(false);
}
रॅपर क्लासेसमुळे आपण आदिम प्रकारातील कमतरता कमी करू या. सर्वात स्पष्ट आहे की आदिम लोकांकडे पद्धती नाहीत. उदाहरणार्थ, त्यांच्याकडे toString() पद्धत नाही , म्हणून तुम्ही, उदाहरणार्थ, int ला String मध्ये रूपांतरित करू शकत नाही . पण इंटीजर रॅपर क्लास हे सोपे करते.

public static void main(String[] args) {

   Integer i = new Integer(432);
  
   String s = i.toString();
}
तथापि, दुसर्‍या दिशेने रूपांतर करणे अवघड असू शकते. समजा आपल्याकडे एक स्ट्रिंग आहे , जी आपल्याला खात्रीने माहित आहे की त्यात एक संख्या आहे. याची पर्वा न करता, स्ट्रिंगमधून संख्या काढण्यासाठी आणि त्यास एका संख्येत रूपांतरित करण्यासाठी आदिम इंट वापरण्याचा कोणताही मूळ मार्ग नाही . पण, आम्ही रॅपर क्लासेससह करू शकतो.

public static void main(String[] args) {

   String s = "1166628";

   Integer i = Integer.parseInt(s);

   System.out.println(i);
}
आउटपुट:
1166628
आम्ही स्ट्रिंगमधून यशस्वीरित्या एक संख्या काढली आणि ती पूर्णांक संदर्भ चल i वर नियुक्त केली . तसे, संदर्भांच्या संदर्भात. तुम्हाला आधीच माहित आहे की वितर्क वेगवेगळ्या प्रकारे पद्धतींमध्ये दिले जातात: मूल्यानुसार आदिम आणि संदर्भानुसार वस्तू. तुम्ही तुमच्या स्वतःच्या पद्धती तयार करताना हे ज्ञान वापरू शकता: उदाहरणार्थ, जर तुमची पद्धत अपूर्णांक संख्या वापरत असेल परंतु तुम्हाला संदर्भानुसार पास होण्यासाठी तर्काची आवश्यकता असेल, तर तुम्ही दुहेरी/फ्लोट ऐवजी डबल/ फ्लोट आर्ग्युमेंट्स या पद्धतीमध्ये पास करू शकता . रॅपर क्लासेसच्या पद्धतींव्यतिरिक्त, त्यांचे स्थिर फील्ड देखील खूप सोयीस्कर असू शकतात. उदाहरणार्थ, कल्पना करा की तुमच्याकडे खालील कार्य आहे: जास्तीत जास्त शक्य प्रदर्शित कराint मूल्य, त्यानंतर किमान संभाव्य मूल्य. ही समस्या ऐवजी मूलभूत दिसते. परंतु Google शिवाय, तुम्ही ते करू शकत नाही. परंतु रॅपर आपल्याला अशी "सांसारिक कार्ये" सहजपणे हाताळण्याची परवानगी देतात:

public class Main {
   public static void main(String[] args) {

       System.out.println(Integer.MAX_VALUE);
       System.out.println(Integer.MIN_VALUE);
   }
}
ही फील्ड तुम्हाला अधिक गंभीर कार्ये पूर्ण करण्यापासून विचलित होण्यापासून रोखतात. 2147483647 (जे MAX_VALUE चे मूल्य असेल) मध्ये टायपिंग करणे ही काही किरकोळ कामगिरी नाही ! :) शिवाय, मागील धड्यात, आम्ही निदर्शनास आणले की रॅपर वस्तू अपरिवर्तनीय असतात.

public static void main(String[] args) {

   Integer a = new Integer(0);
   Integer b = new Integer(0);

   b = a;
   a = 1;
   System.out.println(b);
}
आउटपुट:
0
मूलतः a द्वारे निर्देशित केलेली ऑब्जेक्टची स्थिती बदलली नाही (कारण b चे मूल्य देखील बदलले असते). स्ट्रिंग s प्रमाणे , रॅपर ऑब्जेक्टची स्थिती बदलण्याऐवजी, मेमरीमध्ये पूर्णपणे नवीन ऑब्जेक्ट तयार केला जातो. तर, जावाच्या निर्मात्यांनी शेवटी भाषेतील आदिम प्रकार सोडण्याचा निर्णय का घेतला? प्रत्येक गोष्ट एक वस्तू असली पाहिजे आणि आपल्याकडे रॅपरचे वर्ग आहेत जे आदिम व्यक्त करतात त्या सर्व गोष्टी व्यक्त करू शकतात, फक्त रॅपर भाषेत का ठेवायचे आणि आदिम काढून टाकायचे? उत्तर सोपे आहे: कामगिरी. आदिम प्रकारांना आदिम म्हणतात कारण त्यांच्याकडे वस्तूंची "हेवीवेट" वैशिष्ट्ये नसतात. होय, ऑब्जेक्ट्समध्ये अनेक सोयीस्कर पद्धती आहेत, परंतु आपल्याला नेहमीच त्यांची आवश्यकता नसते. कधीकधी, आपल्याला फक्त 33, किंवा 2.62, किंवा सत्य / असत्य क्रमांकाची आवश्यकता असते . ज्या परिस्थितीत ऑब्जेक्ट्सचे फायदे काही फरक पडत नाहीत आणि प्रोग्रामच्या कार्यासाठी आवश्यक नसतात, त्या कार्यासाठी आदिम अधिक योग्य असतात.