При изменении строк вам необходимо использовать классы StringBuffer и StringBuilder.
В отличие от класса String, объекты классов StringBuffer и StringBuilder можно изменять несколько раз без создания новых неиспользуемых объектов.
Класс StringBuilder был предложен в Java 5. Самая большая разница между ним и StringBuffer заключается в том, что StringBuilder Метод не является потокобезопасным (потокобезопасность означает, что при многопоточном доступе используется механизм блокировки. Когда поток обращается к определенным данным этого класса, он защищается, и другие потоки не могут получить к нему доступ, пока поток не завершит чтение. Другие потоки Могут использоваться. Несогласованность данных или загрязнение данных не возникнут. Поток небезопасен, что означает, что защита доступа к данным не обеспечивается, и возможно, что несколько потоков последовательно изменят данные, и полученные данные будут грязными).
Поскольку StringBuilder имеет преимущество в скорости по сравнению со StringBuffer, в большинстве случаев рекомендуется использовать класс StringBuilder. Однако если приложению требуется потокобезопасность, необходимо использовать класс StringBuffer.
public class Test{ public static void main(String args[]){ StringBuffer sBuffer = new StringBuffer(" test"); sBuffer.append(" String Buffer"); System.out.println(sBuffer); } }
Результаты компиляции и запуска приведенного выше примера следующие:
test String Buffer
Ниже приведены основные методы, поддерживаемые классом StringBuffer:
серийный номер | Описание метода |
---|---|
1 | public StringBufferappend(String s) Добавляет указанную строку к этой последовательности символов. |
2 | public StringBufferverse() Заменяет эту последовательность символов на перевернутую форму. |
3 | public delete(int start, int end) Удаляет символы из подстроки этой последовательности. |
4 | public Insert(int offset, int i) Вставляет строковое представление аргумента int в эту последовательность. |
5 | replace(int start, int end, String str) Заменяет символы подстроки этой последовательности символами данной String . |
Методы в следующем списке аналогичны методам класса String:
серийный номер | Описание метода |
1 | int емкость() возвращает текущую емкость. |
2 | char charAt(int index) Возвращает значение char по указанному индексу в этой последовательности. |
3 | void SureCapacity(intминимальнаяКапасити) Гарантирует, что емкость по крайней мере равна указанному минимуму. |
4 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) Копирует символы из этой последовательности в целевой массив символов dst . |
5 | int indexOf(String str) Возвращает индекс первого вхождения указанной подстроки в строку. |
6 | int indexOf(String str, int fromIndex) Начиная с указанного индекса, возвращает индекс первого вхождения указанной подстроки в строку. |
7 | int LastIndexOf(String str) Возвращает индекс самого правого вхождения указанной подстроки в этой строке. |
8 | int LastIndexOf(String str, int fromIndex) Возвращает индекс в этой строке последнего вхождения указанной подстроки. |
9 | int length() возвращает длину в символах. |
10 | void setCharAt(int index, char ch) Устанавливает символ по данному индексу в ch . |
11 | void setLength(int newLength) Устанавливает длину последовательности символов. |
12 | CharSequence subSequence(int start, int end) Возвращает новую последовательность символов, которая является подпоследовательностью этой последовательности. |
13 | String substring(int start) Возвращает новую String , содержащую подпоследовательность символов, содержащуюся в данный момент в этой последовательности символов. |
14 | String substring(int start, int end) Возвращает новую String содержащую подпоследовательность символов, содержащихся в этой последовательности в данный момент. |
15 | String toString() Возвращает строковое представление данных в этой последовательности. |