Обработка строк в 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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *