Строка не простой тип, а класс, который используется для представления последовательности символов. Сами персонажи соответствуют стандартам Unicode, и есть два способа их инициализации.
Например: String Greeting = "Доброе утро! /N";
Строка приветствия = новая строка (= "Доброе утро! /N");
Характеристика строки заключается в том, что после назначения объект символов, на который он указывает, не может быть изменена.
StringBuffer - это строковый объект с характеристиками передачи ссылки на объект.
Объект StringBuffer может вызвать свои методы для динамического увеличения, вставить, изменять и удалять операции, и не нужно указывать размер заранее, как массив, чтобы достичь эффекта вставки символов и вывозить их одновременно , поэтому очень гибко и удобно для управления строками.
Как только конечная желаемая строка генерируется через StringBuffer, ее можно назвать методом ToString для преобразования его в строковый объект.
Позиция этих двух классов в обработке струн является самоочевидной. Давайте объясним это из следующих моментов
1. Сравнение двух с точки зрения скорости выполнения: Stringbuffer> String
2.String <StringBuffer разум Строка: Строка постоянная stringBuffer: переменная создания символов Из названия выше, строка - это «константа создания символов», то есть неизменное объект. У вас может быть вопрос о понимании этого предложения, например, этот код:
Строка S = "ABCD";
Очевидно, что мы изменили строковую переменную, почему она не изменилась? На самом деле, это своего рода мошенничество. Один объект S используется для выполнения второй строки кода, что означает, что объект S не изменился ранее, поэтому мы говорим, что тип строки является неизменным объектом. На самом деле новые объекты постоянно создаются, и исходные объекты станут мусором и собираются GC.
Но StringBuffers разные. скорость будет быстрее
3. Специальный пример:
Кода -копия выглядит следующим образом:
String str = "Это только тест" + "простой" + ";
StringBuffer Builder = new StringBuilder («Это только»). Append ("simple"). Append ("test");
Вы будете удивлены, обнаружив, что скорость генерации объектов STR просто слишком быстра, и в настоящее время StringBuffer вообще не имеет никакого преимущества в скорости. На самом деле, это хитрость JVM, на самом деле:
String str = "Это только тест" + "простой" + ";
На самом деле:
String Str = «Это всего лишь простой тест»;
Так что это не займет много времени. Но вы должны отметить, что если ваша строка поступает из другого объекта String, скорость не такая быстрая, например:
String str2 = "Это только";
В настоящее время JVM будет делать это регулярно в оригинале.
4.StringBuilder и StringBuffer
StringBuilder: StringBuffer, который не является безопасным: защитный поток Когда мы используем несколько потоков в буфере строк, JVM не может гарантировать, что операция StringBuilder безопасна. . из. Конечно, в большинстве случаев мы работаем под одним потоком, поэтому в большинстве случаев рекомендуется использовать StringBuilder вместо StringBuffer, что является причиной скорости.
Сводка использования трех:
1. Если вы хотите использовать небольшой объем данных, используйте = строка
2. Работать большое количество данных в одном резьбовом строковом буфере = StringBuilder
3. Управляйте большим количеством данных в многопоточном строковом буфере = StringBuffer