Автор оригинала: Pankaj Kumar.
Как следует из названия, Пул строк в java – это пул строк, хранящихся в Кучной памяти Java . Мы знаем, что String-это специальный класс в java, и мы можем создавать строковые объекты с помощью нового оператора, а также предоставлять значения в двойных кавычках.
Пул строк в Java
Вот диаграмма, которая четко объясняет, как пул строк поддерживается в пространстве кучи java и что происходит, когда мы используем различные способы создания строк.
Пул строк возможен только потому, что Строка неизменна в Java и ее реализация концепции Интернирования строк|/. Пул строк также является примером Шаблона проектирования веса мухи .
Stringpool помогает сэкономить много места для среды выполнения Java, хотя для создания строки требуется больше времени.
Когда мы используем двойные кавычки для создания строки, она сначала ищет строку с тем же значением в пуле строк, если она найдена, она просто возвращает ссылку, в противном случае она создает новую строку в пуле, а затем возвращает ссылку.
Однако, используя оператор new , мы заставляем класс String создавать новый объект String в пространстве кучи. Мы можем использовать метод intern ()
, чтобы поместить его в пул или сослаться на другой строковый объект из пула строк, имеющий то же значение.
Вот программа java для изображения пула строк:
package com.journaldev.util; public class StringPool { /** * Java String Pool example * @param args */ public static void main(String[] args) { String s1 = "Cat"; String s2 = "Cat"; String s3 = new String("Cat"); System.out.println("s1 == s2 :"+(s1==s2)); System.out.println("s1 == s3 :"+(s1==s3)); } }
Результатом работы вышеуказанной программы является:
s1 == s2 :true s1 == s3 :false
Сколько строк создается в пуле строк?
Иногда в интервью java вам зададут вопрос о пуле строк. Например, сколько строк создается в приведенной ниже инструкции;
String str = new String("Cat");
В приведенном выше операторе будет создана строка 1 или 2. Если в пуле уже есть строковый литерал “Cat”, то в пуле будет создана только одна строка “str”. Если в пуле нет строкового литерала “Cat”, то он будет сначала создан в пуле, а затем в пространстве кучи, поэтому в общей сложности будет создано 2 строковых объекта.
Прочитайте : Вопросы для интервью с Java-строками