Hvad er begrebet String Pool i java?



String Pool i Java er en pool af strenge gemt i Java Heap Memory. Denne tutorial hjælper dig med en detaljeret tilgang til Java String Pool med eksempler.

Har du hørt om udtrykket “Strengepulje i Java?” Hvis ikke, er du landet på det rigtige sted. String Pool i Java er en pool af strenge, der er gemt i Heap-hukommelse. Lad os grave lidt dybere og forstå dette koncept med Java String-pool i detaljer.

Følgende punkter vil blive diskuteret i denne artikel:





Lad os begynde!

Lad os først og fremmest forstå, hvordan der nøjagtigt oprettes et strengobjekt!



Hvordan oprettes en streng?

For at oprette et strengobjekt i Java er der to måder:

hvordan man genererer tilfældig streng i java
  • Brug af den nye operatør. For eksempel,
Streng s1 = ny streng ('Joey')
  • Brug af en streng bogstavelig eller konstant udtryk. For eksempel,
String s1 = 'Joey' (streng bogstavelig) eller String s1 = 'Joe' + 'y' (streng konstant udtryk)

Hvad er denne strengpool, som jeg taler om, og hvordan er oprettelsen af ​​en streng i Java relateret til dette. Lad mig skære rodet!

Hvad er String Pool i Java?

String Pool er et lagerområde i Java bunke.



Stringallokering, som alle objektallokering , viser sig at være en kostbar affære i både tid og hukommelse. JVM udfører nogle trin under initialisering af strenglitteraler for at øge ydeevnen og mindske hukommelsesomkostningerne. For at mindske antallet af strengobjekter, der er oprettet i JVM, holder klassen streng en pool af strenge.

Hver gang en streng bogstav oprettes, vises JVM kontrollerer strengen bogstavelig pool først. Hvis strengen allerede findes i strengpuljen, returneres en henvisning til den samlede forekomst. Hvis strengen ikke findes i puljen, initialiseres et nyt strengobjekt og placeres i puljen.

Efter at have lært konceptet teoretisk, lad mig fortælle dig, hvordan en strengpulje fungerer i Java trin for trin ved hjælp af enkle forekomster!

Hvordan fungerer String pool i Java?

Når du opretter en ny streng som denne:

String s1 = “Rachel”

JVM kontrollerer automatisk, om den samme værdi findes i strengkonstantpuljen eller ej.

  • hvis ja, optager den den allerede eksisterende værdi.
  • Hvis nej, opretter det en ny streng i sig selv og føjer den til strengpoolen.

Hvis du vil stoppe denne adfærd, skal du oprette en streng ved hjælp af den nye operator:

Streng s1 = ny streng (“Rachel”)

Nu, hvis du er villig til at tilføje denne streng til , Java giver dig en metode kaldet, intern () metode, du kan kalde native intern () metode som denne:

S1.intern ()

Nu vil jeg vise dig implementeringen og arbejdet med strengpool gennem et eksempel.

Men før det, en kort påmindelse!

Som du ved, hvis du sammenligner 2 objekter ved hjælp af == operator, sammenligner det adresser i hukommelsen.

Så vi sammenligner strengene ved hjælp af == for at være helt sikre på, at det er det samme objekt eller ej.

Lad os nu gå ind på vores implementeringsproces.

String Pool i Java: Flow Diagram

String-pool - Edureka

Lad os nu forstå, hvad der sker her trin for trin:

  • Klassen er indlæst, når påberåbes.
  • JVM leder efter alle strenglitteraturer i programmet
  • For det første finder den variablen s1, der refererer til den bogstavelige 'Apple', og den bliver oprettet i hukommelsen
  • En reference til det bogstavelige 'Apple' placeres derefter i strengens konstante poolhukommelse.
  • Derefter finder den en anden variabel s2, der henviser til den samme streng bogstavelige 'Mango'.
  • Derefter finder den en anden variabel s3, der henviser til den bogstavelige 'Apple'
  • Nu hvor JVM allerede har fundet en streng bogstavelig 'Apple', vil både variablerne s1 og s3 henvise til det samme objekt, dvs. 'Apple'.

Java-program til String Pool

offentlig klasse StringPoolExperiment {public static void main (String [] args) {String s1 = 'Rachel' String s2 = 'Rachel' String s3 = new String ('Rachel') String s4 = new String ('Rachel'). praktikant ( ) System.out.println (s1 == s2) // true System.out.println (s1 == s3) // false System.out.println (s1 == s4) // true}}

Produktion:

Sand
Falsk
Sand

I ovenstående eksempel kan du tydeligt se brugen af ​​strenginitialisering på alle de tre måder, dvs.

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

Programmets interne arbejde skal måske være klart nu.

Med dette har jeg nået mod slutningen af ​​min blog. Jeg håber, at indholdet, der er beskrevet her, hjalp dig med at udvide din videnbase. Vi fortsætter med at dykke ned i Java-verdenen. Bliv hængende!

Tjek af Edureka, et pålideligt online læringsfirma med et netværk på mere end 250.000 tilfredse elever spredt over hele kloden. Edurekas Java J2EE- og SOA-uddannelses- og certificeringskursus er designet til studerende og fagfolk, der ønsker at være Java-udvikler. Kurset er designet til at give dig et forspring i Java-programmering og træne dig til både kerne- og avancerede Java-koncepter sammen med forskellige Java-rammer som Hibernate & Forår .

Har du et spørgsmål til os? Nævn det i kommentarfeltet på denne 'String Pool in Java' -blog, og vi vender tilbage til dig hurtigst muligt.