Строка, предоставляемая этим классом StringBuffer, изменяется. Вы можете использовать StringBuffer, когда знаете, что данные символов будут меняться. Обычно вы используете StringBuffers для динамического создания символьных данных.
В Java есть три класса, которые отвечают за символьные операции.
1.Персонаж работает с одним символом.
2.String работает со строкой символов. Неизменяемые классы.
3.StringBuffer также работает со строкой символов, но это класс переменных.
Нить:
Это объект, а не примитивный тип.
Это неизменяемый объект, после его создания его значение невозможно изменить.
Любая модификация существующего объекта String предполагает повторное создание нового объекта и последующее сохранение в нем нового значения.
String — финальный класс, то есть он не может быть унаследован.
Строковыйбуфер:
Это изменяемый объект. При его изменении объект не будет восстановлен, как String. Его можно установить только через конструктор.
StringBuffer sb = новый StringBuffer();
Примечание. Его нельзя оплатить с помощью платежных символов.
sb = "добро пожаловать сюда!";//ошибка
После создания объекта в памяти будет выделено пространство, и в StringBuffer изначально будет сохранено значение null.
При оплате значения вы можете использовать его метод добавления.
sb.append("привет");
Вышеизложенное представляет собой отрывок, распространенный в Интернете, а ниже приведены мои собственные дополнительные идеи:
Адрес изменить нельзя, но можно изменить длину и содержание. Метод add() предназначен для добавления. Когда зарезервированная память превышена, память удваивается.
Сравнение эффективности: StringBuffer выше, чем String. Поскольку StringBuffer зарезервировал место и продолжает добавлять, он работает только с одним объектом. Строку нельзя изменить, а объекты можно создавать только повторно для достижения модификации. ――Если вы часто добавляете, заменяете, изменяете, вставляете или удаляете строки, лучше всего использовать StringBuffer. Если вам необходимо использовать String, вы можете использовать StringBuffer для вызова toString(), чтобы преобразовать его в String.
Моя машина довольно дрянь, и результат после ее выполнения:
Время работы строки: 164593
------------------
Время работы StringBuffer: 31
Более того, у String есть метод contains, а у StringBuffer — нет. Содержит значит включающий. Здесь можно вспомнить метод contains.
Результат выполнения
истинный