Jaký je koncept String Pool v Javě?



String Pool v Javě je skupina řetězců uložená v paměti Java Heap. Tento kurz vám pomůže s podrobným přístupem k Java String Pool s příklady.

Už jste slyšeli o termínu 'String pool v Javě?' Pokud ne, přistáli jste na správném místě. String Pool v Javě je skupina řetězců, která je uložena v Halda paměti. Pojďme se ponořit trochu hlouběji a pochopit tento koncept fondu Java String podrobně.

V tomto článku se budeme zabývat následujícími ukazateli:





Pojďme začít!

Nejprve pochopme, jak přesně je vytvořen objekt řetězce!



Jak vytvořit řetězec?

Chcete-li vytvořit objekt String v Javě, existují dva způsoby:

  • Pomocí nového operátora. Například,
Řetězec s1 = nový řetězec ('Joey')
  • Použití řetězcového nebo konstantního výrazu. Například,
String s1 = 'Joey' (řetězcový literál) nebo String s1 = 'Joe' + 'y' (řetězcový konstantní výraz)

Nyní, o čem je tento String pool, o kterém mluvím, a jak s tím souvisí vytvoření řetězce v Javě. Nech mě vyříznout nepořádek!

Co je to String Pool v Javě?

String Pool je oblast úložiště v haldě Java.



jaký je rozdíl mezi abstraktní třídou a rozhraním

Alokace řetězců, jako všechny alokace objektu , se ukazuje jako nákladná záležitost jak v případě času, tak i paměti. JVM provádí některé kroky při inicializaci řetězcových literálů, aby zvýšil výkon a snížil režii paměti. Aby se snížil počet objektů String vytvořených v JVM, udržuje třída String skupinu řetězců.

Pokaždé, když je vytvořen řetězcový literál, JVM nejprve zkontroluje fond řetězcových literálů. Pokud řetězec již existuje ve fondu řetězců, vrátí se odkaz na sdruženou instanci. Pokud řetězec ve fondu neexistuje, inicializuje se nový objekt String a umístí se do fondu.

Po teoretickém seznámení s konceptem vám řeknu, jak funguje String pool v Javě krok za krokem pomocí jednoduchých instancí!

Jak funguje String pool v Javě?

Když vytvoříte nový řetězec, jako je tento:

Řetězec s1 = „Rachel“

JVM automaticky kontroluje, zda ve fondu konstant řetězců existuje stejná hodnota či nikoli.

  • pokud ano, zabírá již existující hodnotu.
  • Pokud ne, vytvoří nový řetězec sám a přidá ho do fondu řetězců.

Chcete-li toto chování zastavit, vytvořte řetězec pomocí nového operátoru:

Řetězec s1 = nový řetězec („Rachel“)

Nyní, pokud jste ochotni přidat tento řetězec do , Java vám poskytuje metodu nazvanou, intern () metodu, kterou můžete nazvat nativní metodou intern () takto:

S1.intern ()

Nyní vám na příkladu ukážu implementaci a fungování fondu řetězců.

Ale ještě předtím, krátká připomínka!

Jak víte, pokud porovnáváte 2 objekty pomocí operátoru ==, porovnává adresy v paměti.

Takže porovnáme řetězce pomocí ==, abychom si byli zcela jisti, že se jedná o stejný objekt nebo ne.

Nyní se podívejme na náš proces implementace.

co je to dynamické pole

String Pool v Javě: Vývojový diagram

String-pool - Edureka

Nyní pojďme krok za krokem pochopit, co se tady děje:

  • Třída se načte, když je vyvolána.
  • JVM hledá všechny řetězcové literály v programu
  • Nejprve najde proměnnou s1, která odkazuje na doslovné „Apple“, a vytvoří se v paměti
  • Odkaz na doslovný „Apple“ se poté vloží do paměti fondu řetězcových konstant.
  • Poté najde další proměnnou s2, která odkazuje na stejný řetězcový literál „Mango“.
  • Poté najde další proměnnou s3, která odkazuje na doslovné „Apple“
  • Nyní, když JVM již našel řetězcový literál „Apple“, budou proměnné s1 a s3 odkazovat na stejný objekt, tj. „Apple“.

Program Java pro 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ýstup:

Skutečný
Nepravdivé
Skutečný

Ve výše uvedeném příkladu můžete jasně vidět použití inicializace řetězce všemi třemi způsoby, tj

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

Vnitřní fungování programu by nyní mělo být jasné.

S tímto jsem se dostal ke konci svého blogu. Doufám, že vám zde zpracovaný obsah pomohl rozšířit vaši znalostní základnu. Budeme se dál potápět do světa Javy. Zůstaňte naladěni!

Podívejte se na Edureka, důvěryhodná online vzdělávací společnost se sítí více než 250 000 spokojených studentů po celém světě. Školicí a certifikační kurz Edureka Java J2EE a SOA je určen pro studenty a profesionály, kteří chtějí být vývojářem Java. Kurz je navržen tak, aby vám poskytl náskok v programování v Javě a naučil vás základní i pokročilé koncepty Javy spolu s různými rámci Java, jako je Hibernate & Jaro .

Máte na nás dotaz? Uveďte to prosím v sekci komentářů v tomto blogu „String Pool in Java“ a my se vám ozveme co nejdříve.