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

Автор: Laura McKinney
Дата На Създаване: 3 Април 2021
Дата На Актуализиране: 15 Може 2024
Anonim
CS50 2015 - Week 5
Видео: CS50 2015 - Week 5

Съдържание


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

  1. Сравнителна диаграма
  2. дефиниция
  3. Ключови разлики
  4. заключение

Сравнителна диаграма

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

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

Заключение:

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