CodeGym /Java Blog /சீரற்ற /ஜாவாவில் ரேப்பர் வகுப்புகள்
John Squirrels
நிலை 41
San Francisco

ஜாவாவில் ரேப்பர் வகுப்புகள்

சீரற்ற குழுவில் வெளியிடப்பட்டது
வணக்கம்! நீங்கள் ஏற்கனவே பழமையான வகைகளை நன்கு அறிந்திருக்கிறீர்கள், மேலும் அவர்களுடன் சிறிது வேலை செய்திருக்கிறீர்கள். நிரலாக்கத்தில் (மற்றும் குறிப்பாக ஜாவா), முதன்முதலில் பல நன்மைகள் உள்ளன: அவை சிறிய நினைவகத்தைப் பயன்படுத்துகின்றன (இதனால் நிரலை மிகவும் திறமையாக்குகின்றன) மேலும் தெளிவாக வரையறுக்கப்பட்ட மதிப்புகள் உள்ளன. இருப்பினும், ஜாவாவைக் கற்கும் போது, ​​"ஜாவாவில் உள்ள அனைத்தும் ஒரு பொருள்" என்ற மந்திரத்தை நாங்கள் ஏற்கனவே மீண்டும் மீண்டும் கூறியுள்ளோம். ஆனால் ஆதிகாலங்கள் அந்த வார்த்தைகளுக்கு நேரடியாக முரண்படுகின்றன. அவை பொருள்கள் அல்ல. அப்படியானால், நமது "எல்லாம் ஒரு பொருள்" கொள்கை பொய்யா? உண்மையில், அது இல்லை. ஜாவாவில், ஒவ்வொரு பழமையான வகைக்கும் ஒரு இரட்டை சகோதரர், ஒரு ரேப்பர் வகுப்பு உள்ளது.

ரேப்பர் வகுப்பு என்றால் என்ன?

ஒரு ரேப்பர் என்பது ஒரு சிறப்பு வகுப்பாகும், இது ஒரு பழமையான உட்புறத்தை சேமிக்கிறது. ஆனால் இது ஒரு வகுப்பு என்பதால், நீங்கள் அதன் நிகழ்வுகளை உருவாக்கலாம். அவை பழமையான மதிப்புகளை உள்நாட்டில் சேமிக்கின்றன, ஆனால் அவை இன்னும் உண்மையான பொருள்களாக இருக்கின்றன. ரேப்பர் வகுப்பு பெயர்கள் அவற்றின் தொடர்புடைய பழமையான பெயர்களுக்கு மிகவும் ஒத்ததாக இருக்கும் (அல்லது சரியாக அதே போல). எனவே, அவர்கள் நினைவில் கொள்வது எளிது.
பழமையான தரவு வகைகளுக்கான ரேப்பர் வகுப்புகள்
பழமையான தரவு வகைகள் ரேப்பர் வகுப்புகள்
முழு எண்ணாக முழு
குறுகிய குறுகிய
நீளமானது நீளமானது
பைட் பைட்
மிதவை மிதவை
இரட்டை இரட்டை
கரி பாத்திரம்
பூலியன் பூலியன்
ரேப்பர் பொருள்கள் மற்ற பொருள்களைப் போலவே உருவாக்கப்படுகின்றன:

public static void main(String[] args) {

   Integer i = new Integer(682);
  
   Double d = new Double(2.33);
  
   Boolean b = new Boolean(false);
}
ரேப்பர் வகுப்புகள் பழமையான வகைகளின் குறைபாடுகளைக் குறைக்கலாம். மிகத் தெளிவானது என்னவென்றால், பழமையானவர்களுக்கு முறைகள் இல்லை. எடுத்துக்காட்டாக, அவர்களிடம் toString() முறை இல்லை , எனவே, உதாரணமாக, ஒரு முழு எண்ணை ஒரு சரமாக மாற்ற முடியாது . ஆனால் Integer wrapper class இதை எளிதாக்குகிறது.

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 மதிப்பு, அதைத் தொடர்ந்து குறைந்தபட்ச சாத்தியமான மதிப்பு. இந்த பிரச்சனை மிகவும் அடிப்படையானது. ஆனால் கூகுள் இல்லாமல் உங்களால் அதைச் செய்ய இயலாது. ஆனால் ரேப்பர்கள் இதுபோன்ற "உலகப் பணிகளை" எளிதாகக் கையாள உங்களை அனுமதிக்கின்றன:

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 இன் மதிப்பும் மாறியிருக்கும்). Strings ஐப் போலவே , ரேப்பர் பொருளின் நிலையை மாற்றுவதற்குப் பதிலாக, நினைவகத்தில் முற்றிலும் புதிய பொருள் உருவாக்கப்படுகிறது. எனவே, ஜாவாவின் படைப்பாளிகள் இறுதியில் பழமையான வகைகளை ஏன் மொழியில் விட்டுவிட முடிவு செய்தனர்? எல்லாமே ஒரு பொருளாக இருக்க வேண்டும் என்பதாலும், ஆதிகாலங்கள் வெளிப்படுத்தும் அனைத்தையும் வெளிப்படுத்தக்கூடிய ரேப்பர் வகுப்புகள் எங்களிடம் இருப்பதால், ரேப்பர்களை மட்டும் மொழியில் வைத்து, பழமையானவற்றை நீக்குவது ஏன்? பதில் எளிது: செயல்திறன். பழமையான வகைகள் பழமையானவை என்று அழைக்கப்படுகின்றன, ஏனெனில் அவை பொருட்களின் பல "கனமான" அம்சங்களைக் கொண்டிருக்கவில்லை. ஆம், பொருள்களுக்கு பல வசதியான முறைகள் உள்ளன, ஆனால் உங்களுக்கு அவை எப்போதும் தேவையில்லை. சில நேரங்களில், உங்களுக்கு தேவையானது எண் 33, அல்லது 2.62, அல்லது உண்மை / தவறு . பொருள்களின் நன்மைகள் ஒரு பொருட்டல்ல மற்றும் நிரல் செயல்படத் தேவைப்படாத சூழ்நிலைகளில், பழமையானவை பணிக்கு மிகவும் பொருத்தமானவை.
கருத்துக்கள்
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION