Значение строки неизбежно.
Класс Stringbuffer такой же, как и класс строки, и также используется для представления строк, однако, внутренняя реализация StringBuffer отличается от строки. Использование памяти.
StringBuffer выделяет 16-байтовый буфер по умолчанию.
StringBuffer не похож на строку.
Stringbuffer str1 = new Stringbuffer (); из 16 байт длины зарезервировано за stringbuffer str3 = new Stringbuffer (www.weixueyuan.net);
Основные методы класса StringBuffer
Методы в классе StringBuffer в основном фокусируются на работе строк, таких как добавление, вставка и удаление, что также является основным отличием между классом StringBuffer и классом String. В реальной разработке, если вам нужно частые изменения в строку, рекомендуется использовать StringBuffer.
1) Метод Append ()
Метод Append () используется для добавления содержимого к концу текущей строки, аналогично конкатенации строки. После вызова этого метода содержание объекта StringBuffer также изменяется, например:
StringBuffer str = new StringBuffer ("biancheng100"); str.Append (true);
Тогда значение объекта Str станет "Biancheng100true". Обратите внимание, что содержимое, на которое изменилось Str, изменилось, а не наложение STR изменилось.
Операция «+» строки на самом деле должна сначала создать объект StringBuffer, а затем вызовать метод Append (), чтобы разбить фрагменты строки, и, наконец, вызовать метод toString (), чтобы преобразовать его в строку.
Таким образом, операция подключения строки имеет больше дополнительных операций, чем StringBuffer, и эффективность неизбежно будет снижена.
Однако для меньших строк операция «+» является более интуитивной и читаемой, а иногда вы можете немного пожертвовать эффективностью.
2) DeleteCharat ()
Метод DeleteCharat () используется для удаления символов в указанной позиции и для формирования новой строки оставшихся символов. Например:
StringBuffer str = new StringBuffer ("abcdef"); str.
Этот код удалит символ с значением индекса 3, то есть символом «D».
Например, вы также можете удалить несколько символов сразу через метод delete ():
StringBuffer str = new StringBuffer ("abcdef"); str.Delete (1, 4);
Этот код удалит символы со значениями индекса от 1 до 4, включая значение индекса 1, но не 4.
3) Метод вставки ()
INSERT () используется для вставки строки в указанном месте и может считаться обновленной версией append (). Например:
StringBuffer str = new StringBuffer ("abcdef"); str.insert (3, "xyz");
Строка, на которую указана Str, является ABCDXYZEF.
4) Метод setCharat ()
Метод setCharat () используется для изменения символов в указанной позиции. Например:
StringBuffer str = new StringBuffer ("abcdef"); str.setcharat (3, 'z');
Этот код будет изменять символ с значением индекса от 3 до z, а строка, на которую указывает STR ABCZEF.
Приведенное выше - просто простое объяснение некоторых часто используемых методов.
Сравнение эффективности между String и Stringbuffer
Чтобы более четко увидеть их эффективность выполнения, следующий код добавляет 26 английских букв 10 000 раз.
Общественный класс {public void main (String [] args) {string fragment = abcdefghijklmnopqrstuvwxyz; (int i = 0; i <Times; i ++) {str1 += fragment; // Строка (); Результаты работы:
Строка: 5287msStringBuffer: 3 мс
Заключение очевидно, что эффективность выполнения StringBuffer на тысячу раз быстрее, чем строка.
Строка: 35923msstringbuffer: 8 мс
Следовательно, настоятельно рекомендуется использовать StringBuffer, когда он включает в себя много строковых операций.
Класс StringBuilder
Функции класса StringBuilder и класса StringBuffer в основном похожи, а методы аналогичны. быть немного быстрее.
Интерфейс Char -Sevence реализован в StringBuffer, StringBuilder и String.
CHAR -последовательность - это интерфейс, который определяет строковые операции.
Процесс реализации интерфейса ChareSequence of StringBuffer, StringBuilder и String отличается, как показано на рисунке ниже:
Можно видеть, что строка непосредственно реализует интерфейс CharbeSequence;
Суммировать
Безопасность нити:
StringBuffer: потокозабезой
StringBuilder: потоки небезопасны
скорость:
Вообще говоря, скорость от быстрого до медленного - это StringBuilder> StringBuffer> String, конечно, это относительно, а не абсолютно.
Среда использования:
Используйте строку для работы небольшого объема данных;
Используйте StringBuilder, чтобы управлять большими объемами данных в одном потоке;
Операция по многопользованию больших объемов данных использует StringBuffer.