Vad är begreppet String Pool i java?



String Pool i Java är en pool av strängar som lagras i Java Heap Memory. Denna handledning hjälper dig med en detaljerad inställning till Java String Pool med exempel.

Har du hört talas om ordet “Strängpool i Java?” Om nej, har du landat på rätt plats. String Pool i Java är en pool av strängar som lagras i Heap Memory. Låt oss gräva lite djupare och förstå detta koncept av Java String pool i detalj.

Följande tips kommer att diskuteras i den här artikeln:





Låt oss börja!

Låt oss först och främst förstå hur exakt ett strängobjekt skapas!



Hur skapar jag en sträng?

För att skapa ett strängobjekt i Java finns det två sätt:

  • Använda den nya operatören. Till exempel,
Sträng s1 = ny sträng ('Joey')
  • Använd ett sträng bokstavligt eller konstant uttryck. Till exempel,
Sträng s1 = 'Joey' (sträng bokstavlig) eller Sträng s1 = 'Joe' + 'y' (strängkonstantuttryck)

Vad är den här strängpoolen som jag pratar om och hur är skapandet av en sträng i Java relaterad till detta. Låt mig skära ner röran!

Vad är strängpool i Java?

String Pool är ett lagringsområde i Java-heap.



Strängallokering, som alla objektallokering , visar sig vara en kostsam affär i både fall och tid. JVM utför några steg medan stränglitteraler initialiseras för att öka prestanda och minska minnesomkostnader. För att minska antalet strängobjekt som skapats i JVM behåller strängklassen en pool av strängar.

Varje gång en sträng bokstavligen skapas, JVM kontrollerar strängens bokstavliga pool först. Om strängen redan finns i strängpoolen returneras en referens till den poolade instansen. Om strängen inte finns i poolen initialiseras ett nytt strängobjekt och placeras i poolen.

skillnad mellan ansible och kock

Efter att ha lärt mig begreppet teoretiskt, låt mig berätta hur en strängpool fungerar i Java steg för steg med hjälp av enkla instanser!

Hur fungerar String pool i Java?

När du skapar en ny sträng så här:

Sträng s1 = “Rachel”

JVM kontrollerar automatiskt om samma värde finns i strängkonstantpoolen eller inte.

  • om ja, upptar det det redan existerande värdet.
  • Om nej skapar det en ny sträng i sig och lägger till den i strängpoolen.

Om du vill stoppa detta, skapa en sträng med den nya operatören:

Sträng s1 = ny sträng (“Rachel”)

Nu, om du är villig att lägga till den här strängen i , Java ger dig en metod som kallas, intern () -metod som du kan kalla native intern () -metod så här:

S1.intern ()

Nu ska jag visa dig implementeringen och arbetet med strängpool genom ett exempel.

Men innan det, en kort påminnelse!

Som du vet om du jämför två objekt med operatorn == så jämförs adresserna i minnet.

java när du ska använda detta

Så vi kommer att jämföra strängarna med == för att vara helt säkra på att det är samma objekt eller inte.

Låt oss hoppa på vår implementeringsprocess.

vad är skillnaden mellan css och css3

Strängpool i Java: Flödesdiagram

Strängpool - Edureka

Låt oss nu förstå vad som händer här steg för steg:

  • Klassen laddas när åberopas.
  • JVM letar efter alla stränglitteraler i programmet
  • Först hittar den variabeln s1 som hänvisar till bokstavligt “Apple” och den skapas i minnet
  • En referens för det bokstavliga ”Apple” placeras sedan i strängens konstanta poolminne.
  • Sedan hittar den en annan variabel s2 som refererar till samma sträng bokstavliga 'Mango'.
  • Sedan hittar den en annan variabel s3 som hänvisar till den bokstavliga 'Apple'
  • Nu när JVM redan har hittat ett strängbokstavligt 'Apple', kommer både variablerna s1 och s3 att hänvisa till samma objekt, dvs. 'Apple'.

Java-program för 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}}

Produktion:

Sann
Falsk
Sann

I exemplet ovan kan du tydligt se användningen av stränginitiering på alla tre sätt, dvs.

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

Programmets interna arbete bör kanske vara klart nu.

Med detta har jag nått mot slutet av min blogg. Jag hoppas att innehållet som beskrivs här hjälpte dig att utvidga din kunskapsbas. Vi kommer att fortsätta dyka in i Java-världen. Håll dig uppdaterad!

Kolla in av Edureka, ett pålitligt inlärningsföretag online med ett nätverk av mer än 250 000 nöjda elever spridda över hela världen. Edurekas Java J2EE- och SOA-utbildning och certifieringskurs är utformad för studenter och yrkesverksamma som vill vara Java-utvecklare. Kursen är utformad för att ge dig ett försprång till Java-programmering och träna dig för både kärn- och avancerade Java-koncept tillsammans med olika Java-ramverk som Hibernate & Vår .

Har du en fråga till oss? Vänligen nämna det i kommentarsektionen i denna 'String Pool in Java' -blogg så återkommer vi till dig så snart som möjligt.