- •1. Поняття класа-оболонки. Розташування цих класів ієрархії класів Java
- •2. Операції упаковки та распаковки класів-оболонок
- •3. Практичне застосування класів-оболонок
- •4. Порівняння рядків
- •5. Особливості класу String для обробки рядків
- •6. Особливості класу StringBuffer для обробки рядків. Довжина та місткість буферу
- •7. Відмінності між класами String та StringBuffer
- •8. Класи та інтерфейси каркасу колекцій мови Java
- •9. Інтерфейс Collection
- •Iterator
- •10. Порівняння реалізацій інтерфейсу List
- •11. Програмна реалізація ArrayList. Основні операції
- •12. Використання ітератору для роботи из елементами колекцій
- •13. Алгоритми каркасу колекцій мови Java
- •14. Способи визначення порядку елементів колекції
- •15. Програмна реалізація PriorityQueue. Основні операції
- •16. Програмна реалізація ArrayDeque. Основні операції
- •17. Програмна реалізація HashSet . Основні операції
- •18. Програмна реалізація LinkedHashSet . Основні операції
- •19. Програмна реалізація TreeSet . Основні операції
- •20. Способи отримання елементів карти
- •21. Програмна Реалізація HashMap . Основні операції
- •22. Програмна Реалізація TreeMap . Основні операції
- •23. Реалізація множин на базі EnumSet і EnumMap
- •24. Пакет Java. Правила іменування пакетів
- •25. Типи імпорту пакетів. Вирішення конфліктів імен при імпортуванні
- •26. Розмежування доступу до вмісту пакету
- •27. Модуль компіляції. Визначення, вміст, правила опису
- •28. Призначення jar-файлів. Іх склад
- •29. Байтові файлові потоки введення/виведення
- •InputStream
- •30. Буферізовані файлові байтові потоки введення/виведення
- •31. Символьні файлові потоки введення/виведення
- •32. Буферізовані файлові символьні потоки введення/виведення
- •33. Механізм обробки подій у застосуваннях java з gui 34. Шаблон «Компонувальник» для розташування елементів gui
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, коли ви припускаєте змінювати його сотні разів, і ви почнете звертати увагу на різницю.
