Разлика между String и StringBuffer клас в Java
Съдържание
И двете String и StringBuffer са класовете, които работят на низове. Класът StringBuffer е клас връстници на класа String. Обектът от клас String е с фиксирана дължина. Обектът от класа StringBuffer е разрастващ се. Основната разлика между String и StringBuffer е, че обектът на класа "String" е неизменен, Обектът от класа “StringBuffer” непостоянен.
- Сравнителна диаграма
- дефиниция
- Ключови разлики
- заключение
Сравнителна диаграма
Основа за сравнение | низ | StringBuffer |
---|---|---|
Основен | Дължината на обекта String е фиксирана. | Дължината на StringBuffer може да се увеличи. |
модификация | Обектът на струните е неизменен. | Обектът StringBuffer е изменяем. |
производителност | По-бавно е по време на конкатенация. | Той е по-бърз по време на конкатенация. |
памет | Консумира повече памет. | Консумира по-малко памет. |
съхранение | Струнен постоянен басейн. | Памет памет. |
Дефиниция на String
„String“ е клас в Java. Обектът на класа String е с фиксирана дължина и най-важното е да запомните, че обектът от клас String е „неизменна“. След като инициализирате обекта String, не можете да го модифицирате отново. Обектът на клас String се съхранява в String постоянен пул.
Нека първо да разберем, че всеки път, когато създавате някакъв низ; създавате обект от тип низ. Низовите константи също са низови обекти.
System.out.ln ("Здравейте, това е Teckpix Solution");
В горното изявление низът "Здравейте, това е Teckpix Solution" е константа на струните.
Сега нека разберем променяемостта на обекта String с помощта на пример.
String str = new String ("Teckpix"); str.concat ( "Решение"); system.out.ln (str); // изход Teckpix
В горния код се опитах да обединя двата низа „Teckpix“ и „Solution“. Както знаем винаги, когато е създаден низ, това означава, че обектът от тип String е създаден. Следователно, низът „Teckpix“ създава обект, чиято референция е присвоена на низовия обект „str“. След това се опитах да свържа друг низ „Solution“ с низа „Teckpix“, използвайки метода „concat ()“ от клас String.
Тъй като String обекти са неизменни, не се правят промени на низа „Teckpix“ и новият низ „Solution“ създава друг обект в константния пулов низ. Но, препратката към обекта "Решение" не е уловена от нито един обект, следователно препратката към обекта Решение е загубена, въпреки че все още присъства в константата на низовете. Тъй като не се прави промяна на обекта Teckpix, когато аз обектът str, на който по-рано назначих референцията на Teckpix, ще използва само низът „Teckpix“.
Дефиниция на StringBuffer
Класът „StringBuffer“ е клас връстници от клас „String“. Класът StringBuffer предоставя повече функционалност на низовете. Обектът от класа StringBuffer е изменяем, което може да бъде променено. Дължината на обекта StringBuffer може да се разраства. Можете да вмъкнете символите или подредовете в средата на буквалния низ, който е присвоен на обекта StringBuffer или в края на него. StringBuffer разпределя място за 16 допълнителни знака, когато не се изисква конкретна дължина.
Нека разберем променяемостта на обекта StringBuffer с помощта на пример:
StringBuffer Sb = нов StringBuffer („Teckpix“); Sb.append ( "Решение"); system.out.ln (Sb); // Изход Teckpix разтвор
Както знаем, че обектът StringBuffer е изменяем. Методът append () променя StringBuffer обект Sb, към който първоначално референцията на обекта „Teckpix“ е зададена по-рано. Методът append () добавя новия строен буквал „Solution“ в края на низовия буквал „Teckpix“. Сега, когато аз обекта Sb, той ще модифицира низовия обект „Teckpix Solutions“.
- Дължината на String обекта е фиксирана, но дължината на обект на StringBuffer може да бъде увеличена, когато е необходимо.
- String обект е неизменен, т.е. обектът не може да бъде преназначен отново, докато обектът на StringBuffer е изменяем.
- String обектът е по-бавен в изпълнение, докато StringBuffer обектът е по-бърз.
- String обектът изразходва повече памет, докато StringBuffer обектите изразходват по-малко памет.
- Струнните обекти се съхраняват в постоянен пул, докато StringBuffer обектите се съхраняват в паметта на купчината.
Заключение:
Обектите StringBuffer предоставят повече функционалност на низовете в сравнение с класа String. Следователно е за предпочитане да се работи със StringBuffer, вместо с клас String.