Рядки в Джава описуються класом 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) - статичні методи перетворення різних типів у рядок.
- 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, то регулярне вираз застосовується до рядка необмежену кількість разів.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ