Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Модуль.docx
Скачиваний:
8
Добавлен:
19.02.2016
Размер:
96.38 Кб
Скачать

6. Особливості класу StringBuffer для обробки рядків. Довжина та місткість буферу

Клас StringBuffer представляє розширюються та доступні для змін послідовності символів, дозволяючи вставляти символи і подстроки в існуючу рядок і в будь-якому місці. Даний клас набагато економічніше в плані споживання пам'яті і настійно рекомендується до використання.

Існує чотири конструктора класу:

StringBuffer () - резервує місце під 16 символів без перерозподілу пам'яті

StringBuffer (int capacity) - явно встановлює розмір буфера

StringBuffer (String string) - встановлює початкове вміст і резервує 16 символів без повторів резервування

StringBuffer (CharSequence cs) - створює об'єкт, що містить послідовність символів і резервує місце ще під 16 символів

length () - Метод дозволяє отримати поточну довжину об'єкта.

capacity () - Метод дозволяє отримати поточний обсяг виділеної пам'яті.

ensureCapacity () - Можна попередньо виділити місце для певної кількості символів, якщо збираєтеся додавати велику кількість маленьких рядків.

setLength (int length) - Встановлює довжину рядка. Значення має бути невід'ємним.

charAt (int index) і setCharAt (int index, char ch) - Можна витягти значення окремого символу з допомогою методу charAt () і встановити нове значення символу за допомогою методу setCharAt (), вказавши індекс символу і його значення.

getChars () - Дозволяє скопіювати подстроку з об'єкта класу StringBuffer в масив. Необхідно подбати, щоб масив був достатнього розміру для прийому потрібної кількості символів зазначеної підрядка.

append () - Метод з'єднує уявлення будь-якого іншого типу даних. Є кілька перевантажених версій.

StringBuffer append (String string)

StringBuffer append (int number)

StringBuffer append (Object object)

Строкове представлення кожного параметра за лаштунками отримують через метод String.valueOf () і потім отримані рядки склеюються в підсумкову рядок.

insert () - Вставляє один рядок в іншу. Також можна вставляти значення інших типів, які будуть автоматично перетворені в рядки. Вам треба вказати індекс позиції, куди буде вставлятися рядок.

reverse () -Дозволяє змінити порядок символів на зворотний.

delete () і deleteCharAt () - Метод delete () видаляє послідовність символів, вам треба задати індекс першого символу, який треба видалити, а також індекс символу, наступного за останнім з видаляються. Метод deleteCharAt () видаляє один символ із зазначеної позиції.

replace () - Дозволяє замінити один набір символів на інший. Потрібно вказати початковий і кінцевий індекс і рядок заміни.

substring () - Дозволяє отримати частину вмісту. Є дві форми методу. У першому випадку потрібно вказати індекс початку позиції, з якою потрібно отримати підрядок. У другому варіанті вказується початковий індекс і кінцевий індекс, якщо потрібно отримати текст з середини рядка.

7. Відмінності між класами String та StringBuffer

Об'єкт String просто зберігає масив символів і надає методи для виконання операцій на цьому масиві. Об'єкт String - також єдиний об'єкт, який перевантажує оператор конкатенації "+". Це дозволяє строковим бути створеними конкатенацией одного або декількох об'єктів String.

Однак рядка - незмінні значення, одного разу створені вони не можуть змінюватися. Всякий раз, коли Ви перепризначуваних значення строкової змінної, ви насправді створюєте інший об'єкт String і повідомляєте JVM, що потрібно використовувати недавно створений об'єкт String як (placeholder) для змінної.

Об'єкт StringBuffer теж зберігає масив символів, але з деякими тонкими відмінностями.

В ньому не перевантажений метод конкатенації "+".

Його вміст може бути змінено без створення нових екземплярів об'єкта StringBuffer.

Застосовуючи об'єкт StringBuffer, тільки один об'єкт використовується протягом дії циклу. Підвищення продуктивності може бути неочевидно в такому малому циклі, як представлений вище. Однак спробуйте зробити це з об'єктом String, коли ви припускаєте змінювати його сотні разів, і ви почнете звертати увагу на різницю.