Препоръчано, 2024

Избор На Редактора

Разлика между String и StringBuffer Class в Java

String и StringBuffer са класове, които работят с низове. Класът StringBuffer е класът на връстниците от класа String. Обектът на String клас е с фиксирана дължина. Обектът на класа StringBuffer е растящ. Основната разлика между String и StringBuffer е, че обектът на класа “String” е неизменен . Обектът на класа “StringBuffer” е променлив .

Сравнителна таблица

Основа за сравнениениз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.

Тъй като String обектите са неизменни, не се прави промяна на низа „Teckpix“ и новият низ „Solution“ създава друг обект в константен пул. Но, препратката към обекта "Решение" не се улавя от никакъв обект, следователно позоваването на обектното решение се губи, въпреки че все още присъства в константен пул. Тъй като не се прави модификация на обекта Teckpix, когато отпечатам обекта str, на който присвоях позоваването на Teckpix по-рано, ще отпечатам само низ "Teckpix".

Определение на 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

  1. Дължината на обекта String е фиксирана, но дължината на обект от StringBuffer може да бъде увеличена, когато е необходимо.
  2. String обектът е неизменна, т.е. обектът не може да бъде преназначен отново, докато обектът на StringBuffer е променлив.
  3. String обектът е по-бавен при изпълнение, докато обектът StringBuffer е по-бърз.
  4. String обектът консумира повече памет, докато обектите StringBuffer консумират по-малко памет.
  5. Струнните обекти се съхраняват в константен пул, докато в StringBuffer обектите се съхраняват в паметта на купчината.

Заключение:

Обектите StringBuffer осигуряват повече функционалност на низовете в сравнение с класа String. Следователно, за предпочитане е да се работи със StringBuffer вместо с класа String.

Top