Каква е концепцията за String Pool в Java?



String Pool в Java е пул от низове, съхранявани в Java Heap Memory. Този урок ще ви помогне с подробен подход към Java String Pool с примери.

Чували ли сте за термина „String pool в Java?“ Е, ако не, кацнахте на правилното място. String Pool в Java е пул от низове, който се съхранява в Куп памет. Нека да поразровим малко и да разберем подробно тази концепция за Java String pool.

Следните указания ще бъдат обсъдени в тази статия:





Нека да започнем!

Първо, нека разберем как точно се създава низ обект!



java как да клонирате обект

Как да създам низ?

За да създадете обект String в Java, има два начина:

  • Използване на новия оператор. Например,
Низ s1 = нов низ („Джоуи“)
  • Използване на низов литерал или константен израз. Например,
String s1 = 'Joey' (низ литерал) или String s1 = 'Joe' + 'y' (израз на константа)

Сега за какво говоря този String pool и как е свързано създаването на низ в Java. Позволете ми да намаля бъркотията!

Какво е String Pool в Java?

String Pool е място за съхранение в Java купчина.



Разпределение на низове, както всички разпределение на обекти , се оказва скъпа работа както в случаите на време, така и в памет. JVM изпълнява някои стъпки, докато инициализира низови литерали, за да увеличи производителността и да намали разходите за памет. За да намали броя String обекти, създадени в JVM, класът String поддържа група от низове.

Всеки път, когато е създаден низ с литерал, JVM проверява първо пула литерални низове. Ако низът вече съществува в пула от низове, връща се препратка към обединения екземпляр. Ако низът не съществува в пула, нов String обект се инициализира и се поставя в пула.

След като научих теорията теоретично, нека ви разкажа как работи String pool в Java стъпка по стъпка с помощта на прости екземпляри!

Как работи String pool в Java?

Когато създавате нов низ като този:

Низ s1 = „Рейчъл“

JVM автоматично проверява дали същата стойност съществува в пула с константи или не.

  • ако да, той заема вече съществуващата стойност.
  • Ако не, той сам създава нов низ и го добавя към пула от низове.

Ако искате да спрете това поведение, създайте низ с помощта на нов оператор:

Низ s1 = нов низ („Рейчъл“)

Сега, ако сте готови да добавите този низ към , Java ви предоставя метод, наречен intern () метод, който можете да извикате родния метод intern () по следния начин:

S1.intern ()

Сега ще ви покажа внедряването и работата на пула от низове чрез пример.

функция на Фибоначи c ++

Но преди това, кратко напомняне!

Както знаете, ако сравнявате 2 обекта с помощта на == оператор, той сравнява адресите в паметта.

Така че ще сравним низовете, използвайки ==, за да сме напълно сигурни, че това е един и същ обект или не.

Сега нека да преминем към нашия процес на внедряване.

String Pool в Java: Диаграма на потока

Струнен басейн - Edureka

Сега нека разберем какво се случва тук стъпка по стъпка:

  • Класът се зарежда, когато се извиква.
  • JVM търси всички низови литерали в програмата
  • Първо, той намира променливата s1, която се отнася до буквала „Apple“ и тя се създава в паметта
  • След това в паметта на низа с постоянен пул се поставя справка за буквала „Apple“.
  • След това намира друга променлива s2, която се отнася до същия низ литерал “Mango”.
  • След това намира друга променлива s3, която се отнася до буквалния „Apple“
  • Сега, когато JVM вече намери низов литерал „Apple“, и двете променливи s1 и s3 ще се отнасят до един и същ обект, т.е. „Apple“.

Java програма за String Pool

публичен клас StringPoolExperiment {публична статична пустота 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) // вярно System.out.println (s1 == s3) // невярно System.out.println (s1 == s4) // вярно}}

Изход:

Вярно
Невярно
Вярно

В горния пример можете ясно да видите използването на инициализация на низове и по трите начина, т.е.

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

Вътрешната работа на програмата може би трябва да е ясна сега.

С това стигнах към края на моя блог. Надявам се съдържанието, разработено тук, да ви е помогнало да разширите базата си от знания. Ще продължим да се гмуркаме в света на Java. Останете на линия!

Вижте от Edureka, доверена компания за онлайн обучение с мрежа от над 250 000 доволни учащи, разпространени по целия свят. Курсът за обучение и сертифициране на Java J2EE и SOA на Edureka е предназначен за студенти и професионалисти, които искат да бъдат Java Developer. Курсът е създаден, за да ви даде начален старт в програмирането на Java и да ви обучи както за основни, така и за разширени Java концепции, заедно с различни Java рамки като Hibernate & Пролет .

Имате въпрос към нас? Моля, споменете го в раздела за коментари в този блог „String Pool в Java“ и ние ще се свържем с вас възможно най-скоро.