வணக்கம், அமிகோ! மாறிகளின் உள் அமைப்பைப் பற்றி நான் உங்களுக்குச் சொல்ல விரும்புகிறேன். உங்களுக்கு ஏற்கனவே தெரியும், ஒவ்வொரு மாறியும் அதன் மதிப்பு சேமிக்கப்படும் நினைவக பகுதியுடன் தொடர்புடையது. "

"ஆமாம். நீதான் கடைசியா சொன்னேனே."

"அருமை. நீங்க நினைச்சது நல்லது. நான் போறேன், அப்புறம்."

"அனைத்து கலவை வகைகளும் எளிமையானவைகளைக் கொண்டிருக்கின்றன. மேலும் அவை, அவற்றின் முறை, இன்னும் எளிமையானவற்றைக் கொண்டிருக்கின்றன. கடைசிவரை, நாம் பழமையான வகைகளுடன் முடிவடையும் வரை , அதை மேலும் எளிமைப்படுத்த முடியாது. அதுதான் அவை அழைக்கப்படுகின்றன - பழமையான வகைகள் . எடுத்துக்காட்டாக, int என்பது ஒரு பழமையான வகை, ஆனால் சரம் என்பது அதன் தரவை எழுத்துகளின் அட்டவணையாக சேமிக்கும் ஒரு கூட்டு வகையாகும் (இங்கு ஒவ்வொரு எழுத்தும் ஒரு பழமையான வகை char ஆகும் )."

"ரொம்ப சுவாரஸ்யம். போங்க."

"எளியவற்றைக் குழுவாக்குவதன் மூலம் கூட்டு வகைகள் உருவாகின்றன. அத்தகைய வகைகளை வகுப்புகள் என்று அழைக்கிறோம் . ஒரு நிரலில் ஒரு புதிய வகுப்பை வரையறுக்கும்போது, ​​ஒரு புதிய கூட்டு தரவு வகையை அறிவிக்கிறோம் . அதன் தரவு மற்ற கூட்டு வகைகளாகவோ அல்லது பழமையான வகைகளாகவோ இருக்கும்."

ஜாவா குறியீடு விளக்கம்
public class Person
{
   String name;
   int age;
}
ஒரு புதிய கூட்டு வகை அறிவிக்கப்பட்டது – Person. அதன் தரவு (கலப்பு வகை) மாறி மற்றும் (பழமையான வகை) மாறியில்
சேமிக்கப்படுகிறதுStringnameintage
public class Rectangle
{
   int x, y, width, height;
}
ஒரு புதிய கூட்டு வகை அறிவிக்கப்பட்டது – Rectangle. இது நான்கு (பழமையான வகை) மாறிகளைக்
கொண்டுள்ளது .int
public class Cat
{
   Person owner;
   Rectangle territory;
   int age;
   String name;
}
ஒரு புதிய கூட்டு வகை அறிவிக்கப்பட்டது – Cat. இது பின்வரும் மாறிகளைக் கொண்டுள்ளது:
owner, கூட்டு வகை Person
territory, கூட்டு வகை Rectangle
age, பழமையான வகை int
name, கூட்டு வகைString

"இப்போதைக்கு, எல்லாம் தெளிவாக உள்ளது, அது எவ்வளவு விசித்திரமாகத் தோன்றினாலும்."

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

"எனக்கு அது எதுவும் புரியவில்லை."

"மாறி என்பது ஒரு பெட்டி போன்றது என்று முன்பே சொன்னோம். அதில் 13 என்ற எண்ணை சேமித்து வைக்க வேண்டுமானால், ஒரு காகிதத்தில் 13 என்று எழுதி பெட்டியில் போடலாம்."

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

“நாம் ஒரு பேப்பரை எடுத்து பக்கத்து வீட்டுக்காரரின் போன் நம்பரை எழுதி வைக்கிறோம்.. இது ஒரு பொருளைப் பற்றிய குறிப்பு போல.. பக்கத்து வீட்டுக்காரரின் போன் நம்பர் உள்ள பேப்பரை அப்படியே காப்பி செய்து பல பெட்டிகளில் போட்டால் இப்போது ரெஃபரன்ஸ் அதிகம். உங்கள் அண்டை வீட்டாருக்கு. ஆனால், முன்பு போலவே, உங்களுக்கு இன்னும் ஒரு அண்டை வீட்டாரே இருக்கிறார். அது அர்த்தமுள்ளதாக இருக்கிறது, இல்லையா?"

"இந்த வழியில் தரவைச் சேமிப்பதன் முக்கிய அம்சம் என்னவென்றால், நீங்கள் ஒரு பொருளுக்கு பல குறிப்புகளைக் கொண்டிருக்கலாம் "

"எவ்வளவு சுவாரஸ்யம்! எனக்கு அது கிட்டத்தட்ட கிடைத்துவிட்டது. இன்னும் ஒரு முறை சொல்லுங்கள், தயவுசெய்து - ஒரு கலப்பு வகையின் மாறியை அதே கலப்பு வகையின் மற்றொரு மாறிக்கு ஒதுக்கினால் என்ன நடக்கும்?"

"பின்னர் இரண்டு மாறிகளும் ஒரே முகவரியைச் சேமிக்கும். அதாவது ஒரு மாறியால் குறிப்பிடப்பட்ட பொருளின் தரவை நீங்கள் மாற்றினால், மற்றொன்றால் குறிப்பிடப்பட்ட தரவை மாற்றுவீர்கள் . இரண்டு மாறிகளும் ஒரே பொருளைக் குறிப்பிடுகின்றன . நிச்சயமாக, பல இருக்கலாம். மற்ற மாறிகள் அதற்கான குறிப்புகளையும் சேமிக்கின்றன."

"கலப்பு (குறிப்பு/வகுப்பு) வகைகளின் மாறிகள் ஒரு பொருளின் குறிப்பை வைத்திருக்கவில்லை என்றால் என்ன செய்யும்? அது கூட சாத்தியமா?"

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

ஜாவா குறியீடு விளக்கம்
String s;
String s = null;
சமமான அறிக்கைகள்.
Person person;
person = new Person();
person = null;
மதிப்பு பூஜ்யமாக இருக்கும் ஒரு நபர் மாறியை உருவாக்குகிறோம்.
புதிதாக உருவாக்கப்பட்ட நபர் பொருளின் முகவரியை நாங்கள் அதற்கு ஒதுக்குகிறோம்.
மாறிக்கு பூஜ்யத்தை ஒதுக்குகிறோம்.
Cat cat = new Cat();
cat.owner = new Person();
cat.owner.name = "God";
நாம் ஒரு பூனைப் பொருளை உருவாக்கி அதன் முகவரியை மாறி பூனையில் சேமிக்கிறோம்; cat.owner சமம் பூஜ்ய.
புதிதாக உருவாக்கப்பட்ட நபர் பொருளின் முகவரிக்கு சமமாக cat.owner ஐ அமைத்துள்ளோம்.
cat.owner.பெயர் இன்னும் பூஜ்யத்திற்கு சமம்.
cat.owner.name ஐ "கடவுள்"க்கு சமமாக அமைத்துள்ளோம்.

"நான் உங்களைச் சரியாகப் புரிந்துகொண்டேனா? மாறிகள் இரண்டு வகைகளாகப் பிரிக்கப்பட்டுள்ளன: பழமையான வகைகள் மற்றும் குறிப்பு வகைகள். பழமையான வகைகள் மதிப்புகளை நேரடியாகச் சேமிக்கின்றன, அதே சமயம் குறிப்பு வகைகள் ஒரு பொருளின் குறிப்பைச் சேமிக்கின்றன. பழமையான வகைகளில் int, char, boolean மற்றும் பல அடங்கும். குறிப்பு வகைகளில் மற்ற அனைத்தும் அடங்கும். அவற்றை உருவாக்க நாங்கள் வகுப்புகளைப் பயன்படுத்துகிறோம்."

"நீங்கள் சொல்வது முற்றிலும் சரி, என் பையன்."

"எனவே, நீங்கள் எல்லாவற்றையும் புரிந்து கொண்டீர்கள் என்று சொல்கிறீர்கள். உங்கள் அறிவை வலுப்படுத்த உதவும் சில பணிகள் இங்கே உள்ளன."