Управление строками, функции для работы со строками в Java. Часть 1
Продолжаем изучение строк в Java. Основы работы со строками можно посмотреть в уроке «Строки в Java».
Функции
Основные функции
Методы для сравнения строк
КлассString
содержит методы для сравнения строк и частей строк. Следующая таблица описывает эти методы:
Следующая программа использует метод regionMatches
для нахождения строк в другой строке:
Программа выведет Eggs
.
Программа пробегает по строке символ за символом, для каждого символа программа вызывает метод regionMatches
, передавая ему позицию символа, для поиска строки findMe
.
Класс StringBuilder
Объекты типаStringBuilder
отличаются от объектов типа String
тем, что они могут быть изменены. По сути они представляют из себя массивы переменной длины, содержащие последовательность символов. Длина и содержание последовательности могут быть изменены вызовом соответствующих методов.
StringBuilder
необходимо использовать в случаях, когда это поможет упростить код (пример ниже) или если это необходимо для лучшей производительности. Если вам необходимо объединить большое количество строк, использование StringBuilder
будет более эффективным.
Length и Capacity
КлассStringBuilder
как и класс String
, имеет метод length()
, который возвращает длину последовательности символов объекта.
В отличие от строк, в StringBuilder
, помимо длины есть capacity
— количество символов под которое выделена память. Емкость (capacity), возвращаемая методом capacity()
, всегда больше или равна длине строки (обычно больше) и автоматически будет увеличина при необходимости.
Например, следующий код:
StringBuilder sb = new StringBuilder();
sb.append("Greetings");
создаст string builder
длиной 9 символов и емкостью 16:
Класс StringBuilder
содержит несколько методов относящихся к длине и емкости, которых нет в классе String
:
Некоторые операции (например, append()
, insert()
, или setLength()
) могут увеличить длину последовательности символов в stringbuilder
’е , так что длина может оказаться больше текущей емкости. Когда это происходит — емкость автоматически увеличивается.
Функции StringBuilder
Основные функции StringBuilder
, которых нет в String
: append()
и insert()
, которые перегружены для приема разного типа данных. Каждый конвертирует аргумент в строку и добавляет её в строку stringbuilder
’а. Метод append
всегда добавляет символы в конец существующей последовательности, тогда как метод insert
добавляет символы в указанное место.
Некоторые методы класса StringBuilder
.
Вы можете использовать любой метод класса String
на объекте класса StringBuilder
предварительно сконвертировав его в строку методом toString()
. Затем из строки можно опять сделать stringbuilder
, используя конструктор: StringBuilder(String str)
.
Пример
ПрограммаStringDemo
, которую мы рассматривали в предыдущих уроках Java — пример того, когда использование StringBuilder
вместо String
делает программу проще.
StringDemo
переворачивает палиндром:
Программа выведет:
doT saw I was toD
Для того чтобы перевернуть сроку программа сначала конвертирует строку в массив символов (первый цикл), далее переворачивает массив и обратно конвертирует массив в строку.
Если вы конвертируете строку palindrome в stringbuilder
, вы сможете использовать метод reverse()
класса StringBuilder
. Код станет чище и проще читаемым:
Вывод:
doT saw I was toD
Обратите внимание, что в функцию println()
мы передаем StringBuilder
:
System.out.println(sb);
Метод sb.toString()
будет неявно вызван, как и у любого другого объекта, переданного в println()
.
Ссылка на первоисточник: Управление строками, функции для работы со строками в Java. Часть 2