స్ట్రింగ్‌బఫర్ వర్సెస్ స్ట్రింగ్
జావా అందిస్తుంది స్ట్రింగ్‌బఫర్ మరియు స్ట్రింగ్ తరగతులు, మరియు స్ట్రింగ్ మార్చలేని క్యారెక్టర్ స్ట్రింగ్‌లను మార్చడానికి class ఉపయోగించబడుతుంది. సరళంగా చెప్పాలంటే, రకం వస్తువులు స్ట్రింగ్ చదవడానికి మాత్రమే మరియు మార్పులేనివి. ది స్ట్రింగ్‌బఫర్ మార్చగల అక్షరాలను సూచించడానికి class ఉపయోగించబడుతుంది.
ఈ రెండు తరగతుల మధ్య ముఖ్యమైన పనితీరు వ్యత్యాసం ఏమిటంటే స్ట్రింగ్‌బఫర్ కంటే వేగంగా ఉంటుంది స్ట్రింగ్ సాధారణ కలయికలను ప్రదర్శించేటప్పుడు. లో స్ట్రింగ్ మానిప్యులేషన్ కోడ్, క్యారెక్టర్ స్ట్రింగ్‌లు మామూలుగా కలిసి ఉంటాయి. ఉపయోగించి స్ట్రింగ్ తరగతి, కలయికలు సాధారణంగా క్రింది విధంగా నిర్వహించబడతాయి:
స్ట్రింగ్ str = కొత్త స్ట్రింగ్ ("స్టాన్‌ఫోర్డ్"); str += "లాస్ట్!!";
మీరు ఉపయోగించినట్లయితే స్ట్రింగ్‌బఫర్ అదే సమ్మేళనాన్ని నిర్వహించడానికి, మీకు ఇలా కనిపించే కోడ్ అవసరం:
StringBuffer str = కొత్త స్ట్రింగ్‌బఫర్ ("స్టాన్‌ఫోర్డ్"); str.append("లాస్ట్!!");
డెవలపర్‌లు సాధారణంగా పైన ఉన్న మొదటి ఉదాహరణ మరింత ప్రభావవంతంగా ఉంటుందని భావిస్తారు, ఎందుకంటే వారు రెండవ ఉదాహరణ, జోడించు సంయోగం కోసం పద్ధతి, మొదటి ఉదాహరణ కంటే ఖరీదైనది, ఇది ఉపయోగిస్తుంది + ఆపరేటర్ రెండింటిని కలిపేందుకు స్ట్రింగ్ వస్తువులు.
ది + ఆపరేటర్ నిర్దోషిగా కనిపిస్తాడు, కానీ సృష్టించబడిన కోడ్ కొన్ని ఆశ్చర్యాలను కలిగిస్తుంది. ఒక ఉపయోగించి స్ట్రింగ్‌బఫర్ సంయోగం కోసం నిజానికి కోడ్‌ని ఉత్పత్తి చేయగలదు, ఇది aని ఉపయోగించడం కంటే చాలా వేగంగా ఉంటుంది స్ట్రింగ్. ఇది ఎందుకు జరిగిందో తెలుసుకోవడానికి, మేము మా రెండు ఉదాహరణల నుండి రూపొందించబడిన బైట్‌కోడ్‌ను తప్పక పరిశీలించాలి. ఉపయోగించిన ఉదాహరణ కోసం బైట్‌కోడ్ స్ట్రింగ్ ఇలా కనిపిస్తుంది:
0 కొత్త #7 3 డూప్ 4 ldc #2 6 ఇన్‌వోక్‌స్పెషల్ #12 9 astore_1 10 కొత్త #8 13 dup 14 aload_1 15 invokestatic #23 18 invokespecial #13 21 ldc #1 23 invokevirtual #2 voke 26 #15 Virtual 26
0 నుండి 9 స్థానాల్లోని బైట్‌కోడ్ కోడ్ యొక్క మొదటి లైన్ కోసం అమలు చేయబడుతుంది, అవి:
స్ట్రింగ్ str = కొత్త స్ట్రింగ్("స్టాన్‌ఫోర్డ్");
అప్పుడు, 10 నుండి 29 వరకు ఉన్న బైట్‌కోడ్ సంయోగం కోసం అమలు చేయబడుతుంది:
str += "లాస్ట్!!";
ఇక్కడ విషయాలు ఆసక్తికరంగా మారాయి. సంయోగం కోసం రూపొందించబడిన బైట్‌కోడ్ a సృష్టిస్తుంది స్ట్రింగ్‌బఫర్ ఆబ్జెక్ట్, తర్వాత దానిని ప్రేరేపిస్తుంది జోడించు పద్ధతి: తాత్కాలికం స్ట్రింగ్‌బఫర్ వస్తువు 10వ స్థానంలో సృష్టించబడింది మరియు దాని జోడించు పద్ధతిని లొకేషన్ 23 వద్ద అంటారు. ఎందుకంటే స్ట్రింగ్ తరగతి మార్పులేనిది, a స్ట్రింగ్‌బఫర్ సంయోగం కోసం ఉపయోగించాలి.
సంయోగం చేసిన తర్వాత స్ట్రింగ్‌బఫర్ వస్తువు, అది తిరిగి a లోకి మార్చబడాలి స్ట్రింగ్. ఇది కాల్‌తో చేయబడుతుంది స్ట్రింగ్ ప్రదేశంలో పద్ధతి 26. ఈ పద్ధతి కొత్తదాన్ని సృష్టిస్తుంది స్ట్రింగ్ తాత్కాలిక నుండి వస్తువు స్ట్రింగ్‌బఫర్ వస్తువు. ఈ తాత్కాలిక సృష్టి స్ట్రింగ్‌బఫర్ వస్తువు మరియు దాని తదుపరి మార్పిడి తిరిగి a స్ట్రింగ్ వస్తువు చాలా ఖరీదైనది.
సారాంశంలో, పైన ఉన్న కోడ్ యొక్క రెండు పంక్తులు మూడు వస్తువుల సృష్టికి దారితీస్తాయి:
ఎ స్ట్రింగ్ స్థానం 0 వద్ద వస్తువు
ఎ స్ట్రింగ్‌బఫర్ 10వ స్థానంలో ఉన్న వస్తువు
ఎ స్ట్రింగ్ స్థానం 26 వద్ద వస్తువు
ఇప్పుడు, ఉపయోగించిన ఉదాహరణ కోసం రూపొందించిన బైట్‌కోడ్‌ను చూద్దాం స్ట్రింగ్‌బఫర్:
0 కొత్త #8 3 డూప్ 4 ldc #2 6 ఇన్‌వోక్‌స్పెషల్ #13 9 astore_1 10 aload_1 11 ldc #1 13 invokevirtual #15 16 పాప్
0 నుండి 9 స్థానాల్లోని బైట్ కోడ్ మొదటి లైన్ కోడ్ కోసం అమలు చేయబడుతుంది:
StringBuffer str = కొత్త StringBuffer("Stanford");
10 నుండి 16 స్థానంలో ఉన్న బైట్‌కోడ్ సంయోగం కోసం అమలు చేయబడుతుంది:
str.append("లాస్ట్!!");
మొదటి ఉదాహరణలో ఉన్నట్లుగా, ఈ కోడ్‌ని ప్రేరేపిస్తుందని గమనించండి జోడించు ఒక పద్ధతి స్ట్రింగ్‌బఫర్ వస్తువు. మొదటి ఉదాహరణ వలె కాకుండా, తాత్కాలికంగా సృష్టించాల్సిన అవసరం లేదు స్ట్రింగ్‌బఫర్ ఆపై దానిని a లోకి మార్చండి స్ట్రింగ్ వస్తువు. ఈ కోడ్ ఒక వస్తువును మాత్రమే సృష్టిస్తుంది, ది స్ట్రింగ్‌బఫర్, స్థానం 0 వద్ద.
ముగింపులో, స్ట్రింగ్‌బఫర్ సంయోగం కంటే గణనీయంగా వేగంగా ఉంటుంది స్ట్రింగ్ సంయోగం. స్పష్టంగా, స్ట్రింగ్‌బఫర్సాధ్యమైనప్పుడు ఈ రకమైన ఆపరేషన్‌లో s ఉపయోగించాలి. యొక్క కార్యాచరణ ఉంటే స్ట్రింగ్ తరగతి కావాలి, aని ఉపయోగించడాన్ని పరిగణించండి స్ట్రింగ్‌బఫర్ సంయోగం మరియు తర్వాత ఒక మార్పిడిని చేయడం కోసం స్ట్రింగ్.
రెగ్గీ హచర్సన్ సన్ టెక్నాలజీ సువార్తికుడు. అతను J2SE మరియు హాట్‌స్పాట్ పనితీరు ఇంజిన్‌పై దృష్టి సారించి ప్రపంచవ్యాప్తంగా సన్ యొక్క జావా 2 ప్లాట్‌ఫారమ్ సాంకేతికతలను సువార్తీకరించాడు.
ఈ అంశం గురించి మరింత తెలుసుకోండి
"జావావరల్డ్ కొత్త వారపు జావా పనితీరు కాలమ్‌ను ప్రారంభించింది," రెగ్గీ హచర్సన్ (జావా వరల్డ్, మార్చి 2000)
stringebaphar verses string
jaava andistundi stringebaphar mariyu string taragatulu, mariyu string marchaleni carrector stringlanu maarchadaaniki class upayoginchabadutundi. saralamgaa cheppalante, rakam vastuvulu string chadavadaaniki matrame mariyu marpulenivi. dhi stringebaphar maarchagala aksharaalanu suuchimchadaaniki class upayoginchabadutundi.
ee rendu taragatula madhya mukhyamaina paniteeru vyatyaasam emitante stringebaphar kante vegamgaa untundi string saadhaarana kalayikalanu pradarsinchetappudu. loo string manipulation kod, carrector stringle maamuulugaa kalisi untaayi. upayoginchi string taragati, kalayikalu saadhaaranamgaa krindi vidhamgaa nirvahinchabadataayi:
string str = kotta string ("stanford"); str += "last!!";
meeru upayoginchinatlayithe stringebaphar adhe sammelanaanni nirvahinchadaaniki, meeku ilaa kanipinche kod avasaram:
StringBuffer str = kotta stringebaphar ("stanford"); str.append("last!!");
devalaparelu saadhaaranamgaa paina unna modati udaaharana marinta prabhaavavantamgaa untundani bhaavistaaru, endukante vaaru rendava udaaharana, jodinchu samyogam kosam paddhati, modati udaaharana kante khareedainadi, idhi upayogistundi + aperator rendintini kalipenduku string vastuvulu.
dhi + aperator nirdoshigaa kanipistaadu, cony srushtinchabadina kod konni aascharyaalanu kaligistundi. oka upayoginchi stringebaphar samyogam kosam nijaaniki kodeni utpatti cheyagaladu, idhi ani upayoginchadam kante chala vegamgaa untundi string. idhi enduku jarigindo telusukovadaaniki, memu maa rendu udaaharanala nundi roopondinchabadina bitecodenu tappaka pariseelinchaali. upayoginchina udaaharana kosam bitecod string ilaa kanipistundi:
0 kotta #7 3 doop 4 ldc #2 6 inevoxeppeshal #12 9 astore_1 10 kotta #8 13 dup 14 aload_1 15 invokestatic #23 18 invokespecial #13 21 ldc #1 23 invokevirtual #2 voke 26 #15 Virtual 26
0 nundi 9 sthaanaallooni bitecod kod yokka modati line kosam amalu cheyabadutundi, avi:
string str = kotta string("stanford");
appudu, 10 nundi 29 varaku unna bitecod samyogam kosam amalu cheyabadutundi:
str += "last!!";
ikkada vishayaalu aasaktikaramgaa marai. samyogam kosam roopondinchabadina bitecod a srushtistundi stringebaphar abject, tarvaata daanini prerepistundi jodinchu paddhati: taatkaalikam stringebaphar vastuvu 10va sthaanamlo srushtinchabadindi mariyu daani jodinchu paddhatini lokeshan 23 vadda antaaru. endukante string taragati maarpulenidi, a stringebaphar samyogam kosam upayoginchaali.
samyogam chesina tarvaata stringebaphar vastuvu, adhi tirigi a loki marchabadali string. idhi kaalnatho cheyabadutundi string pradesamlo paddhati 26. ee paddhati kottadaanni srushtistundi string taatkaalika nundi vastuvu stringebaphar vastuvu. ee taatkaalika srushti stringebaphar vastuvu mariyu daani tadupari marpidy tirigi a string vastuvu chala khareedainadi.
saaraamsamlo, paina unna kod yokka rendu panktulu moodu vastuvula srushtiki daariteestaayi:
e string sthaanam 0 vadda vastuvu
e stringebaphar 10va sthaanamlo unna vastuvu
e string sthaanam 26 vadda vastuvu
ippudu, upayoginchina udaaharana kosam roopondinchina bitecodenu chuddam stringebaphar:
0 kotta #8 3 doop 4 ldc #2 6 inevoxeppeshal #13 9 astore_1 10 aload_1 11 ldc #1 13 invokevirtual #15 16 pap
0 nundi 9 sthaanaallooni bait kod modati line kod kosam amalu cheyabadutundi:
StringBuffer str = kotta StringBuffer("Stanford");
10 nundi 16 sthaanamlo unna bitecod samyogam kosam amalu cheyabadutundi:
str.append("last!!");
modati udaaharanalo unnatlugaa, ee kodeni prerepistundani gamaninchandi jodinchu oka paddhati stringebaphar vastuvu. modati udaaharana vale kakunda, taatkaalikamgaa srushtinchaalsina avasaram ledu stringebaphar aapai daanini a loki marchandi string vastuvu. ee kod oka vastuvunu matrame srushtistundi, dhi stringebaphar, sthaanam 0 vadda.
mugimpulo, stringebaphar samyogam kante gananeeyamgaa vegamgaa untundi string samyogam. spashtamgaa, stringeabapharsadhya ee rakamaina aapareshanlo s upayoginchaali. yokka kaaryaacharana unte string taragati kavali, ani upayoginchadaanni pariganinchandi stringebaphar samyogam mariyu tarvaata oka maarpidini cheyadam kosam string.
reggi hacharson sun technology suvaartikudu. atanu J2SE mariyu hatespat paniteeru injinpy drushti saarinchi prapanchavyaaptamgaa sun yokka jaava 2 platmaram saanketikatalanu suvaartiikarinchaadu.
ee amsam gurinchi marinta telusukondi
"javavarald kotta vaarapu jaava paniteeru kaalamnu praarambhinchindi," reggi hacharson (jaava werald, marchi 2000)