Aký je koncept String Pool v Jave?



String Pool v Jave je skupina reťazcov uložených v pamäti Java Heap. Tento tutoriál vám pomôže s podrobným prístupom k Java String Pool s príkladmi.

Počuli ste už o tomto pojme 'String pool in Java?' Ak nie, pristáli ste na správnom mieste. String Pool v Jave je skupina reťazcov, ktorá je uložená v Halda pamäte. Poďme sa pozrieť trochu hlbšie a pochopme tento koncept fondu Java String podrobne.

V tomto článku sa budeme zaoberať nasledujúcimi ukazovateľmi:





Poďme začať!

Najskôr si uvedomme, ako presne je vytvorený reťazcový objekt!



Ako vytvoriť reťazec?

Ak chcete vytvoriť objekt String v prostredí Java, existujú dva spôsoby:

  • Pomocou nového operátora. Napríklad,
Reťazec s1 = nový reťazec ('Joey')
  • Použitie reťazcového doslovného alebo konštantného výrazu. Napríklad,
String s1 = 'Joey' (reťazcový literál) alebo String s1 = 'Joe' + 'y' (konštantný výraz reťazca)

Teraz, o čom je táto skupina reťazcov, o ktorej hovorím a ako s tým súvisí vytvorenie reťazca v Jave. Nechám vyrúbať neporiadok!

Čo je to String Pool v Jave?

String Pool je oblasť úložiska v halde Java.



typy rámcov v seléne

Pridelenie reťazcov, ako všetky alokácia objektov , sa ukazuje ako nákladná záležitosť v prípade času i pamäte. JVM vykonáva niektoré kroky pri inicializácii reťazcových literálov na zvýšenie výkonu a zníženie réžie pamäte. Na zníženie počtu objektov String vytvorených v JVM udržuje trieda String skupinu reťazcov.

Zakaždým, keď sa vytvorí reťazcový literál, znak JVM najskôr skontroluje fond reťazcových literálov. Ak reťazec už existuje v oblasti reťazcov, vráti sa odkaz na združenú inštanciu. Ak reťazec vo fonde neexistuje, inicializuje sa nový objekt String a umiestni sa do fondu.

Po teoretickom osvojení tohto konceptu vám poviem, ako funguje String pool v Jave krok za krokom pomocou jednoduchých príkladov!

Ako funguje String pool v Jave?

Keď vytvoríte nový reťazec, ako je tento:

Reťazec s1 = „Rachel“

JVM automaticky kontroluje, či existuje rovnaká hodnota v skupine konštantných reťazcov alebo nie.

  • ak áno, zaberá už existujúcu hodnotu.
  • Ak nie, vytvorí nový reťazec sám a pridá ho do fondu reťazcov.

Ak chcete toto správanie zastaviť, vytvorte reťazec pomocou nového operátora:

Reťazec s1 = nový reťazec („Rachel“)

Teraz, ak ste ochotní pridať tento reťazec do , Java vám poskytuje metódu nazvanú metóda intern (), ktorú môžete nazvať natívnou metódou intern () takto:

S1.intern ()

Teraz vám ukážem implementáciu a fungovanie reťazcového fondu na príklade.

Ale predtým ešte krátke pripomenutie!

Ako viete, ak porovnávate 2 objekty pomocou operátora ==, porovnáva sa adresy v pamäti.

Porovnáme teda reťazce pomocou ==, aby sme si boli úplne istí, že ide o ten istý objekt alebo nie.

Teraz sa pozrime na náš proces implementácie.

tabuľka, ako kombinovať údaje

String Pool v Jave: Vývojový diagram

Sieťový bazén - Edureka

Teraz pochopme, čo sa tu deje krok za krokom:

  • Trieda sa načíta, keď je vyvolaná.
  • JVM hľadá všetky reťazcové literály v programe
  • Najskôr nájde premennú s1, ktorá odkazuje na doslovné „Apple“, a vytvorí sa v pamäti
  • Odkaz na doslovný výraz „Apple“ sa potom umiestni do pamäte spoločného fondu reťazcov.
  • Potom nájde ďalšiu premennú s2, ktorá odkazuje na rovnaký reťazcový literál „Mango“.
  • Potom nájde ďalšiu premennú s3, ktorá odkazuje na doslovné „Apple“
  • Teraz, keď JVM už našiel reťazcový literál „Apple“, budú obidve premenné s1 a s3 odkazovať na rovnaký objekt, tj. „Apple“.

Program Java pre String Pool

public class 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}}

Výkon:

Pravdaže
Falošné
Pravdaže

Vo vyššie uvedenom príklade môžete jasne vidieť použitie inicializácie reťazca všetkými tromi spôsobmi, t

String s1 = 'Rachel' String s2 = 'Rachel' String s3 = new String ('Rachel') String s4 = new String ('Rachel'). Intern ()

Vnútorná práca programu by teraz mala byť jasná.

Týmto som sa dostal ku koncu svojho blogu. Dúfam, že tu spracovaný obsah vám pomohol rozšíriť vašu vedomostnú základňu. Stále sa budeme potápať v Java svete. Zostaňte naladení!

Pozrite sa na autor: Edureka, dôveryhodná online vzdelávacia spoločnosť so sieťou viac ako 250 000 spokojných študentov rozmiestnených po celom svete. Výcvikový a certifikačný kurz Edureka Java J2EE a SOA je určený pre študentov a profesionálov, ktorí chcú byť vývojármi Java. Kurz je navrhnutý tak, aby vám dal náskok v programovaní v Jave a naučil vás základné aj pokročilé koncepty Javy spolu s rôznymi rámcami Java, ako je Hibernate & Jar .

Máte na nás otázku? Uveďte to, prosím, v sekcii komentárov v tomto blogu „String Pool in Java“ a my sa vám ozveme čo najskôr.