Обработка строк в Java
Строки в языке Java встречаются очень часто. А все обусловлено тем, что это – самая основа. И потому, необходимо изучить этот момент. Однако, не стоит думать, что это сложно – все-таки, String, StringBuffer и StringBuilder – простые вещи. Нужно лишь разобраться в них. И для этот как раз-таки, есть данный материал.
Прочитав его до конца, пользователь получит основы по обработке строк в Java, чтобы в дальнейшем можно было легче изучить этот вопрос, зная о самом простом.
Но перед тем, как приступать к StringBuffer и StringBuilder – следует обратить внимание на самое простое, встречаемое пользователями во время прочитывания кода. String – что это? На самом деле, ответить на данный вопрос не составит труда. Данное слово обозначает класс, представленный в виде последовательности символов.
К примеру, «ThisisString» — является объектом класса String. Что необходимо также из начального знать читающим – это то, что нельзя изменить экземпляры класса после того, как они созданы(immutable), а также не может быть наследия(final).
Есть несколько примеров применения String. К примеру, конкатенация, или же, «сложение» строк кода выглядит таким образом:
public static void main(String[] args) {
String command = «Follow» + » » + «the» + » » + «white» + » » + «rabbit»; System.out.println(command); // Follow the white rabbit
}
Если копнуть глубже в тему, то можно понять, что конкатенация выполняется с помощью одного из двух классов, которые, как раз-таки, называются StringBuffer и StringBuilder. Также, используется метод Append. Нужно разобраться с тем, что из себя представляют 2 оставшихся класса, о чем и пойдет речь далее.
StringBuffer и StringBuilder – что это?
Как и говорилось выше – следует разобраться с оставшимися классами. Оба они содержат последовательность символов. И оба они используются для одной и той же цели – они обрабатывают строки. Но у них есть некоторые особенности, о которых должен знать программист Java.
Необходимо понимать, что у StringBuffer есть потокобезопасность, обеспечиваемая синхронизацией, а у StringBuilder таковая отсутствует вообще. В этом недостаток последнего. Но стоит отметить схожую черту – оба класса используются при работе со строками, часто модифицируемыми. Однако, различие есть даже здесь. StringBuilder нужен для однопоточной среды, в то время как StringBuffer необходим для многопоточной.
Что у обоих классов точно похоже, а также отличает таковые от String, описанного в самом начале – у обоих есть изменяемость. То есть, вместо «Immutable»пользователи могут наблюдать значение параметра «Mutable». А что объединяет String, StringBufferи StringBulder – у всех расширяемость отсутствует, так как «Final» является установленным значением. Это – в общих чертах, описание всех трех классов, необходимых для обработки строк в Java.
Подробнее о StringBuffer
Уже разобравшись с определением StringBuffer и StringBuilder, стоит рассказать поподробнее об обоих классах. Первый имеет несколько конструкторов для составления части кода. Отличие между ними небольшое:
- StringBuffer() – необходим для создания «пустого» внутри объекта. В таковом, как уже понятно, не будет никаких символов;
- StringBuffer(str) – этот конструктор уже нужен для того, чтобы что-то находилось внутри(символы).
На практике можно применять как угодно предоставленные варианты употребления. Вот, как примерно может выглядеть конструкция у пользователя:
StringBuffersb = new StringBuffer();
StringBuffer sb2 = new StringBuffer(«Not empty»);
Ввиду того, что метод Append перегружен в StringBuffer, класс может воспринимать в себя почти любые данные:
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();sb.append(new Integer(2));
sb.append(«; «);
sb.append(false);
sb.append(«; «);
sb.append(Arrays.asList(1,2,3));
sb.append(«; «);
System.out.println(sb); // 2; false; [1, 2, 3];
}
Для работы с StringBuffer можно использовать также такие методы, как:
- Delete(int start, int end) – убирает строку в диапазоне от «start»до «end»;
- DeleteCharAt(intindex) – удаляет символ с позиции от «index»;
- Insert(int offset, String str) – вставляет данные из «str» в «offset»;
- Replace(int start, int end, String str) –производит замену символов от «start» до «end», используя данные из «str»;
- Reverse() – позволяет полностью изменить порядок символов на противоположный(к примеру, как «Привет» меняется на «Тевирп»);
- Substring(intstart) – возврат строки, где указано только начало «start». Также можно добавить как и в других конструкциях, «intend»(в скобках после «Substring»).
Подробнее о StringBulder
StringBuilder– почти то же самое, что и StringBuffer. Здесь лишь некоторые изменения присутствуют. Самое выделяющееся – отсутствие синхронизации. Ввиду этого, класс станет работать намного быстрее, чем StringBuilder. Но, потокозащищенности вообще никакой нет.
Наконец, стоит показать, как на практике применяется Stringbuilder:
publicstaticvoidmain(String[]args){
String numbers = «0123456789»;StringBuildersb = new StringBuilder(numbers);
System.out.println(sb.substring(3)); //3456789
System.out.println(sb.substring(4, 8)); //4567
System.out.println(sb.replace(3, 5, «ABCDE»)); //012ABCDE56789
sb = new StringBuilder(numbers);
System.out.println(sb.reverse()); //9876543210
sb.reverse(); // Вернем изначальный порядокsb = new StringBuilder(numbers);
System.out.println(sb.delete(5, 9)); //012349
System.out.println(sb.deleteCharAt(1)); //02349
System.out.println(sb.insert(1, «One»)); //0One2349
}
Зная все это, можно в дальнейшем продолжать обучение по Java, углубляясь в тему по обработке строк или чему-либо другому. Ведь знание применения String, StringBuffer и StringBuilder – важно для программирования на Java.