JavaRush /Java блог /Random UA /Довідник з java. Статичні рядки
articles
15 рівень

Довідник з java. Статичні рядки

Стаття з групи Random UA
Рядки в Джава описуються класом String і є статичними, тобто. у існуючому рядку не можна змінити символи та їх кількість. Крім стандартного створення оператором new, рядки можуть бути створені безпосередньо з рядкової літерали. При цьому, з метою оптимізації, створені об'єкти таким чином додатково зберігаються в окремій області - рядковий пул. String s1 = "d" // строка будет сохранена в пуле // строка не будет сохранена в пуле // будет уничтожена сборщиком мусора String s2 = new String("a"); Один із плюсів поділу рядків на статичні та динамічні - підвищення безпеки там, де рядки використовуються як аргументи (наприклад, відкриття баз даних, інтернет з'єднань, механізм завантаження класів).

операція +

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

виділення підрядка

Є зауваження щодо методу substring - рядок, що повертається, використовує той же байтовий масив, що і вихідний. Наприклад, ви завантажабо рядок А з файлу 1мб. Щось там знайшли і виділабо в окремий рядок Б завдовжки 3 символи. Рядок Б насправді теж займає ті ж 1мб. String s ="very .... long string from file"; // совместно использует ту же память что и s String sub1 = s.substring(2,4); // этот об'єкт использует отдельный массив на 4 символа String sub2 = new String(s.substring(2,4));

основні методи

  • compareTo (String anotherString) – лексиграфічне порівняння рядків;
  • compareToIgnoreCase (String str) - лексиграфічне порівняння рядків без урахування регістру символів;
  • regionMatches (boolean ignoreCase, int toffset, String other, int ooffset, int len) - тест на ідентичність ділянок рядків, можна вказати облік регістру символів;
  • regionMatches (int toffset, String other, int ooffset, int len) - тест на ідентичність ділянок рядків;
  • concat (String str) – повертає з'єднання двох рядків;
  • contains (CharSequence s) - перевіряє, чи входить зазначена послідовність символів у рядок;
  • endsWith (String suffix) - перевіряє чи завершується рядок зазначеним суфіксом;
  • startsWith (String prefix) - перевіряє, чи починається рядок із зазначеного префікса;
  • startsWith (String prefix, int toffset) - перевіряє, чи починається рядок у зазначеній позиції із зазначеного префікса;
  • equals (Object anObject) - перевіряє чи ідентичний рядок зазначеному об'єкту;
  • getBytes () - повертає байтове подання рядка;
  • getChars (int srcBegin, int srcEnd, char[] dst, int dstBegin) - повертає символьне уявлення ділянки рядка;
  • hashCode () - хеш код рядка;
  • indexOf (int ch) - пошук першого входження символу в рядку;
  • indexOf (int ch, int fromIndex) - пошук першого входження символу в рядку із зазначеної позиції;
  • indexOf (String str) - пошук першого входження зазначеного підрядка;
  • indexOf (String str, int fromIndex) - пошук першого входження зазначеного підрядка із зазначеної позиції;
  • lastIndexOf (int ch) - пошук останнього входження символу;
  • LastIndexOf (int ch, int fromIndex) - пошук останнього входження символу із зазначеної позиції;
  • lastIndexOf (String str) - пошук останнього входження рядка;
  • lastIndexOf (String str, int fromIndex) - пошук останнього входження рядка із зазначеної позиції;
  • replace (char oldChar, char newChar) – заміна в рядку одного символу на інший;
  • replace (CharSequence target, CharSequence replacement) - заміна одного підрядка іншим;
  • substring (int beginIndex, int endIndex) - повернути підрядок як рядок;
  • toLowerCase () - перетворити рядок на нижній регістр;
  • toLowerCase (Locale locale) - перетворити рядок на нижній регістр, використовуючи зазначену локалізацію;
  • toUpperCase() - перетворити рядок у верхній регістр;
  • toUpperCase (Locale locale) - перетворити рядок у верхній регістр, використовуючи вказану локалізацію;
  • trim() - відсікти на кінцях рядка порожні символи;
  • valueOf(a) - статичні методи перетворення різних типів у рядок.
Методи пошуку повертають індекс входження або -1, якщо шукане не знайдено. Методи перетворення як replace не змінюють сам рядок, а повертають відповідний новий об'єкт рядка. Методи з регулярними виразами Рядки також мають ряд методів, що використовують регулярні вирази :
  • matches (String regex) - чи задовольняє рядок зазначеного регулярного виразу;
  • replaceAll (String regex, String rplс) - замінює всі входження рядків, що задовольняють регулярному виразу, зазначеним рядком;
  • replaceFirst (String regex, String rplс) - замінює перше входження рядка, що задовольняє регулярному виразу, зазначеним рядком;
  • split (String regex) – розбиває рядок на частини, межами розбиття є входження рядків, що задовольняють регулярному виразу;
  • split (String regex, int limit) – аналогічно попередньому, але з обмеженням застосування регулярного виразу до рядка значенням limit. Якщо limit>0, то і розмір масиву рядків, що повертається, не буде більше limit. Якщо limit<=0, то регулярне вираз застосовується до рядка необмежену кількість разів.
Посилання на першоджерело: http://darkraha.com/ukr/java/lang/string/static_string.php
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ