Чували ли сте за термина „String pool в Java?“ Е, ако не, кацнахте на правилното място. String Pool в Java е пул от низове, който се съхранява в Куп памет. Нека да поразровим малко и да разберем подробно тази концепция за 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: Диаграма на потока
Сега нека разберем какво се случва тук стъпка по стъпка:
- Класът се зарежда, когато се извиква.
- 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“ и ние ще се свържем с вас възможно най-скоро.