Narinig mo na ba ang tungkol sa term 'String pool sa Java?' Kaya, kung hindi, nakarating ka sa tamang lugar. Ang String Pool sa Java ay isang pool ng Strings na nakaimbak sa Tambak na memorya. Hukayin natin nang medyo mas malalim at maunawaan ang konsepto ng Java String pool nang detalyado.
Tatalakayin ang artikulong ito sa artikulong ito:
- Paano lumikha ng isang String?
- Ano ang String pool sa Java?
- Paano gumagana ang String pool sa Java?
- Daloy ng diagram
- Java program para sa String pool
Magsimula na tayo!
Una sa lahat, ipaunawa sa amin kung paano eksaktong nilikha ang isang string object!
Paano lumikha ng isang string?
Upang lumikha ng isang bagay ng String sa Java, mayroong dalawang paraan:
- Gamit ang bagong operator. Halimbawa,
String s1 = bagong String ('Joey')
- Paggamit ng isang string na literal o pare-pareho ang pagpapahayag. Halimbawa,
String s1 = 'Joey' (literal na string) o String s1 = 'Joe' + 'y' (pare-pareho ang expression ng string)
Ngayon, ano ang String pool na pinag-uusapan ko at kung paano nauugnay dito ang paglikha ng isang string sa Java. Hayaan mo akong putulin ang kalat!
Ano ang String Pool sa Java?
Ang String Pool ay isang lugar ng imbakan sa Java heap.
String paglalaan, tulad ng lahat paglalaan ng bagay , nagpapatunay na maging isang mamahaling kapakanan sa parehong mga kaso ng oras at memorya. Gumagawa ang JVM ng ilang mga hakbang habang pinasimulan ang mga string literals upang madagdagan ang pagganap at bawasan ang overhead ng memorya. Upang bawasan ang bilang ng mga bagay na String na nilikha sa JVM, pinapanatili ng klase ng String ang isang pool ng mga string.
Sa tuwing nilikha ang isang literal na string, ang JVM suriin muna ang string literal pool. Kung ang string ay mayroon nang string pool, isang sanggunian sa naipon na halimbawa ay babalik. Kung ang string ay wala sa pool, ang isang bagong bagay ng String ay nagpasimula at inilalagay sa pool.
Matapos malaman ang teorya nang teoretikal, hayaan mong sabihin ko sa iyo kung paano gumagana ang isang String pool sa Java hakbang-hakbang sa tulong ng mga simpleng pagkakataon!
Paano gumagana ang String pool sa Java?
Kapag lumikha ka ng isang bagong string tulad nito:
String s1 = 'Rachel'
Awtomatikong sinusuri ng JVM kung mayroon ang parehong halaga sa string pare-pareho na pool o hindi.
- kung oo, sinasakop nito ang mayroon nang halaga.
- Kung hindi, lumilikha ito ng isang bagong string nang mag-isa at idinagdag ito sa string pool.
Kung nais mong ihinto ang pag-uugali na ito, lumikha ng isang string gamit ang bagong operator:
String s1 = bagong String ('Rachel')
Ngayon, kung nais mong idagdag ang string na ito sa , Nagbibigay sa iyo ang Java ng isang pamamaraang tinatawag na, intern () na pamamaraan na maaari mong tawagan ang katutubong intern () na paraan na tulad nito:
S1.intern ()
Ngayon, ipapakita ko sa iyo ang pagpapatupad at pagtatrabaho ng string pool sa pamamagitan ng isang halimbawa.
Ngunit bago iyon, isang maikling paalala!
Tulad ng alam mo kung pinaghahambing mo ang 2 mga bagay gamit ang == operator na inihahambing nito ang mga address sa memorya.
Kung ihahambing namin ang mga string gamit ang == upang ganap na matiyak na ito ay ang parehong bagay o hindi.
chef vs puppet vs jenkins
Ngayon, sumakay tayo sa proseso ng ating pagpapatupad.
String Pool sa Java: Diagram ng Daloy
Ngayon ay maunawaan natin kung ano ang nangyayari dito hakbang-hakbang:
- Na-load ang klase kung kailan ay inanyayahan.
- Hinanap ng JVM ang lahat ng mga string literals sa programa
- Una, hahanapin nito ang variable s1 na tumutukoy sa literal na 'Apple' at nilikha ito sa memorya
- Ang isang sanggunian para sa literal na 'Apple' ay inilalagay sa string na pare-pareho ang memorya ng pool.
- Pagkatapos ay nakakahanap ito ng isa pang variable s2 na tumutukoy sa parehong string na literal na 'Mango'.
- Pagkatapos ay nakakahanap ito ng isa pang variable s3 na tumutukoy sa literal na 'Apple'
- Ngayon na ang JVM ay nakakita na ng isang literal na string na 'Apple', ang parehong mga variable na s1 at s3 ay tumutukoy sa parehong bagay ibig sabihin ay 'Apple'.
Java program para sa String Pool
pampublikong klase StringPoolExperiment {public static void main (String [] args) {String s1 = 'Rachel' String s2 = 'Rachel' String s3 = new String ('Rachel') String s4 = new String ('Rachel'). intern ( ) System.out.println (s1 == s2) // true System.out.println (s1 == s3) // false System.out.println (s1 == s4) // true}}
Output:
Totoo
Mali
Totoo
Sa halimbawa sa itaas, maaari mong malinaw na makita ang paggamit ng string initialization sa lahat ng tatlong mga paraan ie
String s1 = 'Rachel' String s2 = 'Rachel' String s3 = bagong String ('Rachel') String s4 = bagong String ('Rachel'). Intern ()
Ang panloob na pagtatrabaho ng programa marahil ay dapat na malinaw ngayon.
Sa pamamagitan nito, naabot ko ang pagtatapos ng aking blog. Inaasahan kong ang mga nilalaman na naidagdag dito ay nakatulong sa iyo sa pagpapalawak ng iyong base sa kaalaman. Patuloy kaming sumisid sa mundo ng Java. Manatiling nakatutok!
Suriin ang ni Edureka, isang pinagkakatiwalaang kumpanya sa pag-aaral sa online na may isang network na higit sa 250,000 nasiyahan na mga nag-aaral na kumalat sa buong mundo. Ang kurso sa pagsasanay at sertipikasyon ng Java J2EE at SOA ng Edureka ay idinisenyo para sa mga mag-aaral at propesyonal na nais na maging isang Java Developer. Ang kurso ay dinisenyo upang bigyan ka ng isang panimula sa pag-program ng Java at sanayin ka para sa parehong core at advanced na mga konsepto ng Java kasama ang iba't ibang mga balangkas ng Java tulad ng Hibernate & Spring .
May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento ng blog na 'String Pool in Java' at babalikan ka namin sa lalong madaling panahon.