МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Робота з рядками в Java
Методичні вказівки
до виконання лабораторної роботи №4
з курсу “Об’єктно-орієнтоване програмування”
для студентів базового напрямку
6.0804 “Комп’ютерні науки”
ЗАТВЕРДЖЕНО
на засіданні кафедри “Системи автоматизованого проектування” Протокол № 1від 30.08.2010
ЛЬВІВ 2010 Мова програмування Java. Методичні вказівки до виконання лабораторної роботи №4 “Робота з рядками в Java” з курсу: “Об’єктно-орієнтоване програмування” для студентів базового напрямку 6.0804 “Комп’ютерні науки”.
Укладачі: Каркульовський В.І., доцент, к.т.н.
Керницький А.Б., ст.викл., др.інж.
Відповідальний за випуск:
Рецензенти:
1. МЕТА РОБОТИ
Отримати навички програмування з використанням стрічок у мові Java.
2.ОСНОВНІ ТЕОРЕТИЧНІ ВІДОМОСТІ
Важливе місце в обробці інформації займає робота з текстами. Текстові рядки у мові Java є об’єктами. Вони представляються екземплярами класу String або класу StringBuffer. Звичайно, можна занести текст у масив символів типу char або навіть у масив байтів типу byte, але тоді не буде можливості використати готові методи роботи з текстовими рядками.
Для чого в мову введені два класи для зберігання рядків? В об’єктах класу String зберігаються рядки-константи незмінної довжини і змісту. Це значно прискорює оброблення рядків і дозволяє економити пам’ять, розділяючи рядок між об’єктами, які його використовують. Довжину рядків, які зберігаються в об’єктах класу StringBuffer, можна змінювати, вставляючи і додаючи рядки і символи, видаляючи підрядки або з’єднуючи декілька рядків в один. У багатьох випадках, коли потрібно змінити довжину рядка типу String , компілятор Java неявно перетворює його в тип StringBuffer, змінює довжину, потім перетворює назад у тип String. Наприклад, наступна дія
String s = "Це" + " один " + "рядок";
компілятор виконує наступним чином:
String s = new StringBuffer().append("Це").append(" один ").append("рядок").toString();
Створюється об’єкт класу StringBuffer, у нього послідовно додаються рядки "Це", " один ", "рядок", і одержаний об’єкт класу StringBuffer буде приведений до типу String методом toString (). Нагадаємо, що символи у рядках зберігаються у кодуванні Unicode, в якому кожний символ займає два байти. Тип кожного символу - char.
2.1. КЛАС String
Перед роботою з рядком його потрібно створити. Це можна зробити різними способами.
2.1.1. Створення рядка
Найпростіший спосіб створити рядок — це організувати посилання типу String на рядок-константу:
String s1= "Це рядок.";
Якщо константа довга, то її можна записати у декількох рядках текстового редактора, зв’язуюючи їх операцією зчеплення:
String s2 = "Це довгий рядок, " + "записаний в двох рядках вихідного тексту";
Не потрібно забувати різницю між порожнім рядком String s = "", який не містить жодного символу, і порожнім посиланням String s = null, яке не вказує на жодний рядок і не є об’єктом.
Найправильніший спосіб створення об’єкту з точки зору ООП — це викликати його конструктор в операції new. Клас String надає у розпорядження дев’ять конструкторів:
String() — створюється об’єкт з порожнім рядком;
String (String str) — з одного об’єкта створюється інший, тому даний конструктор рідко використовується;
String (StringBuffer str) — перетворена копія об’єкту класу BufferString;
String(byte[] byteArray) — об’єкт створюється із масиву байтів byteArray;
String (char [] charArray) — об’єкт створюється із масиву charArray символів Unicode;
String (byte [] byteArray, int offset, int count) — об’єкт створюється із частини масиву байтів byteArray, починається з індексу offset і містить count байтів;
String (char [] charArray, int offset, int count) — те ж саме, але масив складається із символів Unicode;
String(byte[] byteArray, String encoding) — символи, записані у масиві байтів, задаються в Unicode-рядку із врахування кодування encoding;
String(byte[] byteArray, int offset, int count, String encoding) — ...