Новини високих технологій
» » Java. String: методи, приклади

Java. String: методи, приклади

20-06-2018, 18:59
2 015
Java String або рядки в Java є основними носіями текстової інформації, тому цей клас популярний і часто використовується. Пакет Java.lang є кілька класів для роботи з рядками - це StringBuffer і StringBuilder. Вони оголошені як final - це говорить про те, що від цих класів неможливо успадковуватись. Для того щоб перевірити це, відкриємо редактор і напишемо слово string, а потім перейдемо в сам клас. Тут ми побачимо, що він є final - це і означає відсутність спадкування.

Способи створення об'єктів

Об'єкт класу Java String можна створити декількома способами. Один з них - за допомогою ключового слова new і конструктора класу. Якщо натиснути CTRL + P, то можна побачити всі ці конструктори. Java String приймає рядок, масив char, int, byte, а також об'єкти класів StringBuffer і StringBuilder. Другий спосіб для створення об'єкта - це пряме привласнення посилання, укладеної в подвійні лапки.


Класи StringBuilder, StringBuffer і їх методи

Класи StringBuilder, StringBuffer дуже схожі один на одного і за призначенням близькі до класу String. З допомогою методів і конструкторів об'єкти цих класів можна перетворювати одне в одного і в рядок. Також у StringBuilder є конструктори, які беруть рядок і послідовність символів, тому рядок можна перетворити на об'єкти. В обох випадках є метод ToString. Він не відноситься до класів StringBuilder і StringBuffer, а класу Object, з допомогою якого їх і можна привести до рядку. Подивитися усі методи можна, якщо натиснути CTRL + P. Основна відмінність цих двох класів один від одного полягає в тому, що StringBuilder працює швидше, але він не є потокобезопасным, на відміну від StringBuffer. Потокобезопасность - це здатність коду функціонувати відразу в декількох потоках без блокування.


Особливості створення об'єкта класів StringBuilder або StringBuffer

При створенні об'єкту StringBuilder або StringBuffer конструктор за замовчуванням автоматично резервує деякий об'єм пам'яті під 16 символів. Це можна перевірити, використовуючи один з них, метод Capacity і вивід на консоль. В результаті буде виведено розмір буфера 16 символів. Можна натиснути ще раз CTRL + P, і вибрати метод Int Capacity. Тобто, в конструкторі ми може задати якийсь розмір буфера. Також існує спосіб встановити його пізніше. Для цього в StringBuilder вибираємо метод Ensure Capacity. За допомогою нього ми можемо задати мінімальний гарантований розмір буфера. Якщо змінити його, наприклад, на 20 а потім знову запустити консоль, ми отримаємо 34. Вся справа в тому, що можна задати саме мінімальний гарантований розмір, тобто, в будь-якому випадку, він не буде менше 20. Але, якщо в цьому класі є в якомусь методі або конструкторі формула, за якою розраховується допустима величина.

Присвоєння значення рядка об'єкту

Для того щоб присвоїти певного об'єкту якесь значення рядка, необхідно записати це значення в конструктор або використовувати один з методів Append. Їх дуже багато, деякі з цих методів можуть приймати boolean, а потім перетворити його в рядок і складати, деякі приймають char, масив, послідовності і т. д. На відміну від String, StringBuilder і StringBuffer, коли їх методи використовуються, то ми продовжуємо працювати з цим же об'єктом, а не створюємо новий.

Відмінності методів String і StringBuilder

При роботі з рядком, якщо використовувати якісь методи, наприклад, конкатенації або склеювання об'єктів, то в цьому випадку в результаті створюється новий рядок. В цьому можна переконатися при виводі на консоль. Як правило, класи StringBuilder і StringBuffer використовуються, коли дуже часто йде додавання рядків. Наприклад, у циклі, де існує великий обсяг інформації і постійно відбувається додавання рядків, краще використовувати саме їх. Це прискорить процес роботи, так як StringBuilder робить все швидше, тут не відбувається постійне створення нового об'єкта.

Метод SetLength

При складанні рядків (при кожному складання) буде створюватися новий об'єкт. Якщо їх більше тисячі, то буде витрачатися безліч зайвих ресурсів, а сам процес займе багато часу. Також у StringBuilder є метод SetLength, де можна встановити розмір буфера. Наприклад, якщо задати 15 і вивести результат в консоль, то отримаємо число 20. Цей об'єкт при досягненні необхідного розміру буфера автоматично збільшується відповідно до заданої в цьому методі формулою. Збільшення може відбуватися практично до певної межі. Наприклад, в методі Capacity максимальне число символів в об'єкті буде дорівнює числу int.

Методи Insert і Delete

Наступний метод, найбільш часто використовуваний у StringBuilder, - це Insert. Він дозволяє вставити символ у вказану позицію. У нього також існує безліч параметрів. Ще один популярний метод - видалення символу рядка. Для виконання цієї операції потрібно звернутися до Delete і вибрати його зі списку. Наприклад, можна звернутися до підрядку від початкового індексу до кінцевого або видалити символ, використовуючи його індекс.
Останній метод StringBuilder, який ми будемо розбирати, - це Recerse або реверс. Його використовують для перевороту рядка. Символи в ній будуть вибудовуватися в зворотному порядку. Якщо виконати його і вивести в консоль об'єкт, то отримаємо її дзеркальне відображення. У цьому випадку ми продовжуємо працювати з тим же об'єктом, новий при цьому не створюється. Просто в ньому тепер зберігається інша інформація. У StringBuilder дуже багато методів, які аналогічні тим, що є у String. Працюють вони точно так само. Різниці між StringBuffer і StringBuilder за методами практично ніякої, за винятком потокобезопасности StringBuffer. З-за цієї особливості він працює трохи повільніше.

Методи класу String

Поговоримо про методи класу Java String. Спочатку розглянемо їх для об'єкта srt1 і str2 а потім - статичні методи безпосередньо самого класу String. Перший метод, який ми будемо розбирати, - CharAt. Він приймає індекс і повертає символ. В Java рядки є індексованими, тобто під кожним індексом лежить якийсь символ. Наприклад, якщо створити об'єкт Java, то "j" буде лежати під індексом "0", "a" під індексом "1", "v" - "2", "a" - "3". Тобто, якщо записати в методі "0", то він поверне символ, що знаходиться під нульовим індексом у цьому рядку. Перевірити роботу цього методу можна виведенням в консоль і запуском програми. У першому випадку, ми побачимо символ "j". Якщо поміняти "0" на "1", то побачимо символ "a".

Метод CodepointAt

Наступний метод Java String, з яким ми познайомимося, - CodepointAt. Він повертає int і приймає int-індекс. CodepointAt повертає символ Юнікоду за заданим індексом. Тобто, якщо ми напишемо індекс "1", знову звертаючись до індексу рядка та символу "a", цей метод поверне нам число в кодуванні Юнікод відповідне символу "a". Якщо запустити додаток, ми побачимо число 97. Наприклад, якщо ми знаємо, що індекс "A" відповідає числу 65 в кодуванні Юнікод. Тоді, при запуску, де в методі прописано таке значення, ми одержимо 65.

Порівняння рядків в Java String

Ще один метод compareTo. Він повертає int, а приймає інший рядок. В Java String порівняння рядків між собою відбувається за допомогою цього методу. Він бере str1 і порівнює її з приймається рядком, лексично або лексикографічно, з урахуванням регістра букв, тобто з урахуванням великих і малих літер. Якщо вміст рядків однакове, то ми повинні отримати при запуску програми "0", так як в процесі відбувається віднімання символів. Тому, якщо вміст різне, у відповіді прийде якесь число, що дорівнює різниці індексів.

Методи compareToIgnoreCase і Concat

Наступний метод, який ми будемо розбирати, - це compareToIgnoreCase. Він схожий на попередній, тільки тут не враховується регістр букв, тобто неважливо, заголовна буква чи прописна. У редакторі коду пишемо str зі значенням Java і останню букву зробимо заголовної. І в результаті ми все одно отримуємо 0. Ми отримаємо інше значення, якщо буде якийсь інший символ. Тепер розглянемо метод для рядка Java String - Concat. Він призначений для додавання, злиття або об'єднання двох рядків. Concat аналогічний звичайному додавання рядків за допомогою символу "+".

Методи Equals і EqualsIgnoreCase

Метод Equals приймає інший об'єкт типу Object. Але так як всі успадковані класи у нас мають тип Object, значить, ми можемо передати і рядок. Зворотний тип метод Equals - boolean, тобто наша рядок порівнюється з іншим об'єктом на рівність. Порівнюється вміст двох об'єктів. Тобто, якщо ми передамо рядок str2 то, якщо її вміст не одно з об'єктом, ми отримаємо відповідь хибність, а якщо воно одно true. Є також метод порівняння рядків без урахування регістру. Він називається - EqualsIgnoreCase. Він схожий на compareTo і працює схожим чином. Зворотний тип тут - boolean. У випадку з compareTo в результаті ми отримуємо різницю символів або 0 якщо вміст збігається.

Методи HashCode і IndexOf

Наступний метод - HashCode. Він повертає хеш-код нашого об'єкта. Він є у кожного об'єкта, і являє собою число, точніше, бітову рядок фіксованої довжини. Отримати його можна за допомогою цього методу. Розглянемо метод IndexOf. Насправді їх кілька, але ми будемо розглядати тільки один. Він приймає змінну ch - змінна в кодуванні Юнікод. Тобто, якщо ця змінна збігається з символом у рядку, то повертається індекс цього символу, якщо ні, то "-1". Якщо наше число в кодуванні Юнікод є в цьому рядку, то повертається індекс цього символу. Якщо ж немає такого символу, то повертається "-1".

Методи IsEmpty, Length, Split, Substring

Тепер розберемо метод IsEmpty. Він повертає true, якщо довжина рядка дорівнює 0 тобто вона є порожньою. Наступний метод - Length. Він відповідає за кількість символів в рядку, тобто повертає довжину Java String. Прогалини теж є символами. Метод Split приймає рядок-роздільник і повертає масив рядків. Ми можемо використовувати текст, поміщений в подвійні лапки, або рядок. Коли метод зустрічає пробіл, він ділить рядок і частини розподіляє в масив. В результаті ми отримаємо масив рядків. Ми можемо помістити в рядок кому, Split теж розділить її на частини. Звернемося до методу Substring. Він витягує з рядка підрядок довжиною endindex-beginindex, починаючи з останньої позиції. Один з прикладів Java String для цього методу: написати рядок і задати для неї два індексу, тоді буде вирізана рядок, і її початком буде перший індекс, а закінченням - другий. В консолі буде виводитися певна частина str1. Для перенесення рядки в Java String додається "n".

Методи ToCharArray, ToLowerCase, ToUpperCase, Trim

Метод ToCharArray повертає масив символів, тобто рядок розбирається посимвольно. Якщо оголосити якийсь char, а потім в метод помістити певний елемент, то кожен символ опиниться в масиві char. Потім кожен елемент масиву виводиться на консоль. Ще один метод - ToLowerCase. Він переводить рядок у нижній регістр. Протилежним чином спрацьовує ToUpperCase - він робить всі букви в рядку великими. Дуже часто використовуваний метод - Trim. Він обрізає пробіли на початку і в кінці рядка. Статичних методів безпосередньо самого класу дуже багато, тому що вони приймають різні типи і масиви. Найбільш часто використовуваний - це ValueOf. Він перетворює змінну заданого типу в рядок.
Цікаво по темі
Як перетворити JavaScript рядка в число
Як перетворити JavaScript рядка в число
Немає різниці в тому, якого типу змінна використовується у виразі. Якщо математичне вираз, всі його змінні автоматично будуть інтерпретовані як
Приклади застосування методу JavaScript length
Приклади застосування методу JavaScript length
Довжина рядка, числа або іншого елемента скрипта має істотне значення. Особливістю підходу мови jаvascript до поняття довжини є можливість
Функція strpos в PHP: визначення позиції підрядка
Функція strpos в PHP: визначення позиції підрядка
Пошук входження підрядка в рядок за допомогою функції PHP strpos(). Типи вхідних і вихідних параметрів, приклади і тонкощі використання. Схожі
Як здійснити запис у файл Java
Як здійснити запис у файл Java
При написанні програм на мові Java рано чи пізно постане необхідність читання і запису інформації в файл. Для цього в мові передбачені наступні
Java: робота з файлами - запис, читання, видалення
Java: робота з файлами - запис, читання, видалення
Переважна більшість програм, написаних на Java, так чи інакше взаємодіють з файлами, зберігаючи і дістаючи звідти потрібну інформацію. Для операцій з