Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Контакти
 


Тлумачний словник
Авто
Автоматизація
Архітектура
Астрономія
Аудит
Біологія
Будівництво
Бухгалтерія
Винахідництво
Виробництво
Військова справа
Генетика
Географія
Геологія
Господарство
Держава
Дім
Екологія
Економетрика
Економіка
Електроніка
Журналістика та ЗМІ
Зв'язок
Іноземні мови
Інформатика
Історія
Комп'ютери
Креслення
Кулінарія
Культура
Лексикологія
Література
Логіка
Маркетинг
Математика
Машинобудування
Медицина
Менеджмент
Метали і Зварювання
Механіка
Мистецтво
Музика
Населення
Освіта
Охорона безпеки життя
Охорона Праці
Педагогіка
Політика
Право
Програмування
Промисловість
Психологія
Радіо
Регилия
Соціологія
Спорт
Стандартизація
Технології
Торгівля
Туризм
Фізика
Фізіологія
Філософія
Фінанси
Хімія
Юриспунденкция






StringBuffer

Рядки

Клонування

Механізм клонування, як слідує з назви, дозволяє породжувати нові об'єкти на основі існуючого, які володіли б точно таким же станом, що й вихідний. Тобто очікується, що для вихідного об'єкта, представленого посиланням x, і результату клонування, що повертається методом x.clone(), вираження:

 

x == x.clone()

 

повинне бути правдивим, як і вираження:

 

x.clone().getClass() == x.getClass()

 

При виконанні методу clone() спочатку перевіряється, чи можна клонувати вихідний об'єкт. Якщо розроблювач хоче зробити об'єкти свого класу доступними для клонування через Object.clone(), те він повинен реалізувати у своєму класі інтерфейс Cloneable. У цьому інтерфейсі немає жодного елемента, він служить лише ознакою для віртуальної машини, що об'єкти можуть бути клоновані. Якщо перевірка не виконується успішно, метод породжує помилку CloneNotSupportedException.

 

String це клас, який використовується в Java для подання рядків. Він має властивість незмінюваності. Після того як створений екземпляр цього класу, його вміст уже не може бути модифіковано.

Існує багато способів створити об'єкт String. Найбільше простій, якщо вміст рядка відомо на етапі компіляції, - написати текст у лапках:

 

String abc = "abc";

 

Можна використовувати й різні варіанти конструктора. Найбільш простий з них - конструктор, що одержує на вході строковий літерал.

 

String s = new String("immutable");

 

В Java для рядків визначений оператор +. При використанні цього оператора виробляється конкатенація рядків. У класі String також визначений метод:

 

public String concat(String s);

 

Він повертає новий об'єкт-рядок, доповнений праворуч рядком s.

Як ми вже відзначали, рядок складається із двобайтних Unicode-символів. Однак, у багатьох випадках потрібно працювати з рядком як з набором байтів (введення/виведення, робота з базою даних і т.д.). Перетворення рядка в послідовність байтів реалізовується наступними методами:

- byte[] getBytes() - повертає послідовність байтів у кодуванні, прийнятої за замовчуванням (як правило, залежить від настроювань операційної системи);

- byte[] getBytes(String encoding) - повертає послідовність байтів у зазначеному кодуванні encoding.

Для виконання зворотної операції (перетворення байтів у рядок) необхідно сконструювати новий об'єкт-рядок за допомогою наступних методів:

- String(byte[] bytes) - створює рядок з послідовності байтів у кодуванні, прийнятої за замовчуванням;

- String(byte[] bytes, String enc) - створює рядок з послідовності байтів у зазначеному кодуванні.

Цей клас використовується для створення й модифікації строкових виражень, які після можна перетворити в String. Він реалізований на основі масиву char[], що дозволяє, на відміну від String, модифікувати його значення після створення об'єкта.

Розглянемо найбільш часто використовувані конструктори класу StringBuffer:

- StringBuffer() - створює порожній StringBuffer;

- StringBuffer(String s) - буфер заповнюється зазначеним значенням s;

- StringBuffer(int capacity) - створює екземпляр класу StringBuffer із зазначеним розміром (довжина char[]). Завдання розміру не означає, що не можна буде оперувати рядками з більшою довжиною, чим зазначено в конструкторі. Насправді цим гарантується, що при роботі з рядками меншої довжини додаткове виділення пам'яті не буде потрібно.

Основні методи, використовувані для модифікації StringBuffer, це:

- public StringBuffer append(String str) - додає переданий рядок str у буфер;

- public StringBuffer insert(int offset, String str) - вставка рядка, починаючи з позиції offset (пропустивши offset символів).

Варто звернути увагу, що обидва методи мають варіанти, що приймають як параметри різні примітивні типи Java замість String. При використанні цих методів аргумент попередньо приводиться до рядка (за допомогою String.valueOf()).

Ще один важливий момент, пов'язаний із цими методами, - вони повертають сам об'єкт, у якого викликаються. Завдяки цьому, можливо їхнє використання в ланцюжку.

5 Помилки при роботі програми. Виключення (Exceptions)

При виконанні програми можуть виникати помилки. В одних випадках це викликано помилками програміста, в інші - зовнішніми причинами.




Переглядів: 558

<== попередня сторінка | наступна сторінка ==>
Масиви як тип даних в Java | Причини виникнення помилок

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

 

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.004 сек.