హలో, అమిగో! వేరియబుల్స్ యొక్క అంతర్గత నిర్మాణం గురించి నేను మీకు చెప్పాలనుకుంటున్నాను. మీకు ఇప్పటికే తెలిసినట్లుగా, ప్రతి వేరియబుల్ దాని విలువ నిల్వ చేయబడిన మెమరీ ప్రాంతంతో అనుబంధించబడుతుంది. "

"అవును. దాని గురించి నువ్వు నాకు చివరిసారి చెప్పావు."

"అద్భుతం. మీరు గుర్తుపెట్టుకోవడం మంచిది. నేను వెళ్తాను, అప్పుడు."

"అన్ని సమ్మేళన రకాలు సరళమైన వాటిని కలిగి ఉంటాయి. మరియు అవి, వాటి వంతుగా, మరింత సరళమైన వాటిని కలిగి ఉంటాయి. చివరి వరకు, మేము ఆదిమ రకాలతో ముగించాము , వాటిని మరింత సరళీకృతం చేయలేము. అదే వాటిని పిలుస్తారు - ఆదిమ రకాలు . ఉదాహరణకు, int అనేది ఆదిమ రకం, కానీ స్ట్రింగ్ అనేది దాని డేటాను అక్షరాల పట్టికగా నిల్వ చేసే మిశ్రమ రకం (ఇక్కడ ప్రతి అక్షరం ఆదిమ రకం చార్ )."

"చాలా ఇంటరెస్టింగ్. వెళ్ళు."

"సరళమైన వాటిని సమూహపరచడం ద్వారా మిశ్రమ రకాలు ఏర్పడతాయి. మేము అటువంటి రకాలను తరగతులు అని పిలుస్తాము . మేము ప్రోగ్రామ్‌లో కొత్త తరగతిని నిర్వచించినప్పుడు, మేము కొత్త మిశ్రమ డేటా రకాన్ని ప్రకటిస్తాము . దాని డేటా ఇతర మిశ్రమ రకాలు లేదా ఆదిమ రకాలుగా ఉంటుంది."

జావా కోడ్ వివరణ
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 మరియు అనేక ఇతరాలను కలిగి ఉంటాయి. సూచన రకాల్లో మిగతావన్నీ ఉంటాయి. మేము వాటిని సృష్టించడానికి తరగతులను ఉపయోగిస్తాము."

"నువ్వు చెప్పింది నిజమే, నా అబ్బాయి."

"కాబట్టి, మీరు ప్రతిదీ అర్థం చేసుకున్నారని అంటున్నారు. మీ జ్ఞానాన్ని బలోపేతం చేయడంలో మీకు సహాయపడటానికి ఇక్కడ కొన్ని పనులు ఉన్నాయి."