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