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:
- Hvordan oprettes en streng?
- Hvad er strengpool i Java?
- Hvordan fungerer String pool i Java?
- Flowdiagram
- Java-program til strengpool
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
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.