Wat is het concept van String Pool in Java?



String Pool in Java is een pool van strings die is opgeslagen in Java Heap Memory. Deze tutorial helpt je met een gedetailleerde benadering van Java String Pool met voorbeelden.

Heb je gehoord over de term 'String pool in Java?' Nou ja, zo nee, dan ben je op de goede plek beland. String Pool in Java is een pool van strings die is opgeslagen in Heap-geheugen. Laten we wat dieper graven en dit concept van Java String-pool in detail begrijpen.

De volgende punten worden in dit artikel besproken:





datum ophalen uit string java

Laten we beginnen!

Laten we allereerst begrijpen hoe een string-object precies wordt gemaakt!



Hoe maak je een string aan?

Er zijn twee manieren om een ​​String-object in Java te maken:

  • Met behulp van de nieuwe operator. Bijvoorbeeld,
String s1 = nieuwe String ('Joey')
  • Gebruik een letterlijke of constante tekenreeks. Bijvoorbeeld,
String s1 = 'Joey' (letterlijke tekenreeks) of String s1 = 'Joe' + 'y' (tekenreeksconstante uitdrukking)

Nu, wat is deze String-pool waar ik het over heb en hoe is het maken van een string in Java hiermee gerelateerd. Laat me de rommel wegwerken!

Wat is String Pool in Java?

String Pool is een opslagruimte in Java-heap.



String-toewijzing, zoals alle objecttoewijzing , blijkt een kostbare aangelegenheid te zijn in zowel de gevallen van tijd als herinnering. De JVM voert enkele stappen uit tijdens het initialiseren van letterlijke tekenreeksen om de prestaties te verbeteren en de geheugenoverhead te verminderen. Om het aantal String-objecten dat in de JVM is gemaakt te verminderen, houdt de String-klasse een pool van strings bij.

Elke keer dat een letterlijke tekenreeks wordt gemaakt, de JVM controleert eerst de letterlijke pool van de tekenreeks. Als de string al bestaat in de stringpool, wordt een verwijzing naar de gepoolde instantie geretourneerd. Als de string niet in de pool bestaat, wordt een nieuw String-object geïnitialiseerd en in de pool geplaatst.

Nadat ik het concept theoretisch heb geleerd, zal ik je vertellen hoe een String-pool in Java stap voor stap werkt met behulp van eenvoudige instanties!

Hoe werkt String-pool in Java?

Als je als volgt een nieuwe string maakt:

String s1 = 'Rachel'

JVM controleert automatisch of dezelfde waarde in de stringconstante pool bestaat of niet.

  • zo ja, dan bezet het de reeds bestaande waarde.
  • Zo nee, dan maakt het zelf een nieuwe string aan en voegt deze toe aan de stringpool.

Als u dit gedrag wilt stoppen, maakt u een string met een nieuwe operator:

String s1 = nieuwe string ('Rachel')

Nu, als u bereid bent om deze string toe te voegen aan de , Java biedt je een methode genaamd intern () methode die je native intern () methode als volgt kunt aanroepen:

S1.intern ()

Nu zal ik je de implementatie en werking van string pool laten zien door middel van een voorbeeld.

Maar daarvoor een korte herinnering!

Zoals je weet als je 2 objecten vergelijkt met de == operator, vergelijkt het adressen in het geheugen.

Dus we zullen de strings vergelijken met == om er zeker van te zijn dat het hetzelfde object is of niet.

Laten we nu naar ons implementatieproces gaan.

String Pool in Java: stroomdiagram

String-pool - Edureka

Laten we nu stap voor stap begrijpen wat er hier gebeurt:

  • De klasse wordt geladen wanneer wordt aangeroepen.
  • JVM zoekt naar alle letterlijke tekenreeksen in het programma
  • Ten eerste vindt het de variabele s1 die verwijst naar de letterlijke 'Apple' en wordt deze in het geheugen aangemaakt
  • Een verwijzing voor de letterlijke “Apple” wordt dan in het stringconstante poolgeheugen geplaatst.
  • Dan vindt het een andere variabele s2 die verwijst naar dezelfde letterlijke tekenreeks “Mango”.
  • Dan vindt het een andere variabele s3 die verwijst naar de letterlijke 'Apple'
  • Nu JVM al een letterlijke tekenreeks 'Apple' heeft gevonden, verwijzen zowel de variabelen s1 als s3 naar hetzelfde object, namelijk 'Apple'.

Java-programma voor String Pool

public class StringPoolExperiment {public static void main (String [] args) {String s1 = 'Rachel' String s2 = 'Rachel' String s3 = nieuwe String ('Rachel') String s4 = nieuwe String ('Rachel'). intern ( ) System.out.println (s1 == s2) // true System.out.println (s1 == s3) // false System.out.println (s1 == s4) // true}}

Uitgang:

Klopt
Vals
Klopt

In het bovenstaande voorbeeld kunt u duidelijk het gebruik van tekenreeksinitialisatie op alle drie manieren zien, d.w.z.

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

De interne werking van het programma moet nu misschien duidelijk zijn.

Hiermee ben ik aan het einde van mijn blog gekomen. Ik hoop dat de hier uitgewerkte inhoud u heeft geholpen bij het verbreden van uw kennisbasis. We blijven duiken in de Java-wereld. Blijf kijken!

Bekijk de door Edureka, een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld. De training- en certificeringcursus Java J2EE en SOA van Edureka is bedoeld voor studenten en professionals die Java-ontwikkelaar willen worden. De cursus is ontworpen om u een voorsprong te geven in het programmeren van Java en u te trainen in zowel kern- als geavanceerde Java-concepten, samen met verschillende Java-frameworks zoals Hibernate & De lente .

Heeft u een vraag voor ons? Vermeld het in de commentarensectie van deze “String Pool in Java” blog en we nemen zo snel mogelijk contact met je op.