Как stringbuilder преобразовать в string java
Перейти к содержимому

Как stringbuilder преобразовать в string java

  • автор:

Как преобразовать в string java

В Java есть несколько способов преобразовать данные в строку.

  • Использование метода toString() У многих классов есть метод toString() , который возвращает строковое представление объекта. Для преобразования объекта в строку нужно вызвать этот метод:
Integer number = 42; String str = number.toString(); 
  • Использование оператора + или метода concat() Они могут быть использованы для объединения строк и других типов данных. Если один из операндов является строкой, то Java автоматически преобразует другой операнд в строку:
int number = 42; String str = "The answer is " + number; 
  • Использование класса String.valueOf() Класс String имеет статический метод valueOf() , который принимает любой объект в качестве аргумента и возвращает его строковое представление:
int number = 42; String str = String.valueOf(number); 
  • Использование форматирования строк Java поддерживает форматирование строк с помощью метода String.format() . С помощью этого метода можно создавать строки с заданным форматом и подставлять в них значения:
int number = 42; String str = String.format("The answer is %d", number); 

Как stringbuilder преобразовать в string java

Объекты String являются неизменяемыми, поэтому все операции, которые изменяют строки, фактически приводят к созданию новой строки, что сказывается на производительности приложения. Для решения этой проблемы, чтобы работа со строками проходила с меньшими издержками в Java были добавлены классы StringBuffer и StringBuilder . По сути они напоминает расширяемую строку, которую можно изменять без ущерба для производительности.

Эти классы похожи, практически двойники, они имеют одинаковые конструкторы, одни и те же методы, которые одинаково используются. Единственное их различие состоит в том, что класс StringBuffer синхронизированный и потокобезопасный. То есть класс StringBuffer удобнее использовать в многопоточных приложениях, где объект данного класса может меняться в различных потоках. Если же речь о многопоточных приложениях не идет, то лучше использовать класс StringBuilder, который не потокобезопасный , но при этом работает быстрее, чем StringBuffer в однопоточных приложениях.

StringBuffer определяет четыре конструктора:

StringBuffer() StringBuffer(int capacity) StringBuffer(String str) StringBuffer(CharSequence chars)

Аналогичные конструкторы определяет StringBuilder:

StringBuilder() StringBuilder(int capacity) StringBuilder(String str) StringBuilder(CharSequence chars)

Рассмотрим работу этих классов на примере функциональности StringBuffer.

При всех операциях со строками StringBuffer / StringBuilder перераспределяет выделенную память. И чтобы избежать слишком частого перераспределения памяти, StringBuffer/StringBuilder заранее резервирует некоторую область памяти, которая может использоваться. Конструктор без параметров резервирует в памяти место для 16 символов. Если мы хотим, чтобы количество символов было иным, то мы можем применить второй конструктор, который в качестве параметра принимает количество символов.

Третий и четвертый конструкторы обоих классов принимают строку и набор символов, при этом резервируя память для дополнительных 16 символов.

С помощью метода capacity() мы можем получить количество символов, для которых зарезервирована память. А с помощью метода ensureCapacity() изменить минимальную емкость буфера символов:

String str = "Java"; StringBuffer strBuffer = new StringBuffer(str); System.out.println("Емкость: " + strBuffer.capacity()); // 20 strBuffer.ensureCapacity(32); System.out.println("Емкость: " + strBuffer.capacity()); // 42 System.out.println("Длина: " + strBuffer.length()); // 4

Так как в самом начале StringBuffer инициализируется строкой «Java», то его емкость составляет 4 + 16 = 20 символов. Затем мы увеличиваем емкость буфера с помощью вызова strBuffer.ensureCapacity(32) повышаем минимальную емкость буфера до 32 символов. Однако финальная емкость может отличаться в большую сторону. Так, в данном случае я получаю емкость не 32 и не 32 + 4 = 36, а 42 символа. Дело в том, что в целях повышения эффективности Java может дополнительно выделять память.

Но в любом случае вне зависимости от емкости длина строки, которую можно получить с помощью метода length() , в StringBuffer остается прежней — 4 символа (так как в «Java» 4 символа).

Чтобы получить строку, которая хранится в StringBuffer, мы можем использовать стандартный метод toString() :

String str = "Java"; StringBuffer strBuffer = new StringBuffer(str); System.out.println(strBuffer.toString()); // Java

По всем своим операциям StringBuffer и StringBuilder напоминают класс String.

Получение и установка символов

Метод charAt() получает, а метод setCharAt() устанавливает символ по определенному индексу:

StringBuffer strBuffer = new StringBuffer("Java"); char c = strBuffer.charAt(0); // J System.out.println(c); strBuffer.setCharAt(0, 'c'); System.out.println(strBuffer.toString()); // cava

Метод getChars() получает набор символов между определенными индексами:

StringBuffer strBuffer = new StringBuffer("world"); int startIndex = 1; int endIndex = 4; char[] buffer = new char[endIndex-startIndex]; strBuffer.getChars(startIndex, endIndex, buffer, 0); System.out.println(buffer); // orl

Добавление в строку

Метод append() добавляет подстроку в конец StringBuffer:

StringBuffer strBuffer = new StringBuffer("hello"); strBuffer.append(" world"); System.out.println(strBuffer.toString()); // hello world

Метод insert() добавляет строку или символ по определенному индексу в StringBuffer:

StringBuffer strBuffer = new StringBuffer("word"); strBuffer.insert(3, 'l'); System.out.println(strBuffer.toString()); //world strBuffer.insert(0, "s"); System.out.println(strBuffer.toString()); //sworld

Удаление символов

Метод delete() удаляет все символы с определенного индекса о определенной позиции, а метод deleteCharAt() удаляет один символ по определенному индексу:

StringBuffer strBuffer = new StringBuffer("assembler"); strBuffer.delete(0,2); System.out.println(strBuffer.toString()); //sembler strBuffer.deleteCharAt(6); System.out.println(strBuffer.toString()); //semble

Обрезка строки

Метод substring() обрезает строку с определенного индекса до конца, либо до определенного индекса:

StringBuffer strBuffer = new StringBuffer("hello java!"); String str1 = strBuffer.substring(6); // обрезка строки с 6 символа до конца System.out.println(str1); //java! String str2 = strBuffer.substring(3, 9); // обрезка строки с 3 по 9 символ System.out.println(str2); //lo jav

Изменение длины

Для изменения длины StringBuffer (не емкости буфера символов) применяется метод setLength() . Если StringBuffer увеличивается, то его строка просто дополняется в конце пустыми символами, если уменьшается — то строка по сути обрезается:

StringBuffer strBuffer = new StringBuffer("hello"); strBuffer.setLength(10); System.out.println(strBuffer.toString()); //"hello " strBuffer.setLength(4); System.out.println(strBuffer.toString()); //"hell"

Замена в строке

Для замены подстроки между определенными позициями в StringBuffer на другую подстроку применяется метод replace() :

StringBuffer strBuffer = new StringBuffer("hello world!"); strBuffer.replace(6,11,"java"); System.out.println(strBuffer.toString()); //hello java!

Первый параметр метода replace указывает, с какой позиции надо начать замену, второй параметр — до какой позиции, а третий параметр указывает на подстроку замены.

Обратный порядок в строке

Метод reverse() меняет порядок в StringBuffer на обратный:

StringBuffer strBuffer = new StringBuffer("assembler"); strBuffer.reverse(); System.out.println(strBuffer.toString()); //relbmessa

String Builder. To String Метод

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Преобразовывает значение типа StringBuilder в значение String.

Перегрузки

Преобразует значение данного экземпляра в String.

Преобразует значение подстроки этого экземпляра в String.

ToString()

Преобразует значение данного экземпляра в String.

public: override System::String ^ ToString();
public override string ToString ();
override this.ToString : unit -> string
Public Overrides Function ToString () As String
Возвращаемое значение

Строка, чье значение совпадает с данным экземпляром.

Примеры

В следующем примере демонстрируется вызов метода ToString. Этот пример является частью более крупного примера, предоставленного StringBuilder для класса .

// Display the number of characters in the StringBuilder // and its string. Console::WriteLine(" chars: ", sb->Length, sb->ToString()); 
// Display the number of characters in the StringBuilder and its string. Console.WriteLine(" chars: ", sb.Length, sb.ToString()); 
// Display the number of characters in the StringBuilder and its string. printfn $" chars: " 
' Display the number of characters in the StringBuilder and its string. Console.WriteLine(" chars: ", sb.Length, sb.ToString()) 

Комментарии

Необходимо вызвать ToString метод для преобразования объекта String в StringBuilder объект, прежде чем можно будет передать строку, представленную StringBuilder объектом, в метод, имеющий String параметр, или отобразить его в пользовательском интерфейсе.

Как stringbuilder преобразовать в string java

Спасибо, интересная статья. Уточнила для себя ещё отдельно, что метод insert() – в Java вставляет символы в данную строку буфера (StringBuffer). Подстрока добавляется перед указанным индексом.

рост Уровень 32
17 сентября 2022
Илья Ненашев Уровень 14
26 марта 2022

статья интересная,но что значит потокобезопсаный класс?и синхронизация методов что это такое,эти слова меня пугают,кто может обьяснить про это?

jenyaVarenkin Уровень 13
21 января 2022
великолепная статья, разложила все по полочкам. спасибо.
Tallahassee Уровень 18
1 июля 2021
Великолепная статья!
Павел Новиков Уровень 19
21 июля 2020
Только я нарисовал себе табличку в блокноте, как она оказывается в конце статьи есть)
Anton Уровень 41
17 июня 2020

случайно узнал что у StringBuffer и StringBuilder не переопределен метод equals, значит сравнивать их следует например вот так

 String.valueOf(s1).equals(String.valueOf(s2)) 

Сообщество

JavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.

Подписывайтесь
Язык интерфейса
«Программистами не рождаются» © 2024 JavaRush
Скачивайте наши приложения
«Программистами не рождаются» © 2024 JavaRush

Этот веб-сайт использует данные cookie, чтобы настроить персонально под вас работу сервиса. Используя веб-сайт, вы даете согласие на применение данных cookie. Больше подробностей — в нашем Пользовательском соглашении.

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

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