Давайте проанализируем конкатенацию строки ниже.
1. Строение
Откройте исходный код строки, как показано на рисунке
Вы обнаружите, что значение символа, которое хранит строку, является окончательной постоянной. Глядя на метод строительства строки, мы обнаружили, что значение строки определяется методом строительства. Необходимо объяснить ключевое слово в финале здесь
Атрибут, модифицированный Final, является постоянной (значение не может быть изменено). Ему либо присваивается значение при объявлении его, либо присваивается значение в методе строительства. После назначения его нельзя изменить.
Поэтому использование строки для реализации строчек строки. Поскольку значение строки не может быть изменено, для каждой строчки необходимо генерировать новую строку для хранения новой строки. Следовательно, использование строки для обработки строк строк будет иметь очень низкую производительность.
Для получения дополнительной информации о строке, пожалуйста, обратитесь к блогу: http://longpo.iteye.com/blog/2199493
2.stringbuffer
Класс StringBuffer наследует класс абстрактного класса AbstractStringBuilder и открывает исходный код AbstractStringBuilder.
Давайте посмотрим на три метода перегрузки
Установлено, что все конструкторы родительского класса AbstractStringBuilder называются.
Было обнаружено, что массив char, в котором хранит данные Stringbuffer, не имеет конечного типа, что означает, что его можно изменить, а сконструированные строки все еще имеют свободное пространство, чтобы разбивать строки.
В StringBuffer мы используем функцию Append () для строк сплайсинга. Мы можем думать, что, хотя в массиве Чар все еще остается, этого определенно недостаточно, чтобы все время разбивать его. Следовательно, необходимо посмотреть на реализацию исходного кода функции добавления.
Проверьте метод добавления своего родительского класса AbstractStringBuilder
Когда массив значений не способен на достаточную емкость, для хранения строки создается новый массив значений. На этом этапе вы должны понимать принцип сплайсинга строки StringBuffer. Когда массив значений ChAR недостаточно, для хранения будет создан более крупный массив емкости. Эффективность значительно выше, чем у строки.
3. Стринг -строитель
StringBuilder и StringBuffer - два брата, и их использование в основном одинаковое. Разница в том, что StringBuffer синхронизирован и безопасен для потока, в то время как StringBuilder не гарантирует синхронизацию и безопасность потока.
StringBuilder быстрее, чем StringBuffer в большинстве реализаций, и когда обратные буферы доступа к одному потоку доступны, рекомендуется сначала использовать StringBuilder.
Выше приведено выбор строки Java, представленный редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!