В Java, String, StringBuffer и StringBuilder часто используются классы строк в программировании. Разница между ними также является вопросом, который часто задают в интервью. Теперь суммируйте и посмотрите, как они разные и одинаковые.
1. Переменная и неизменная
String Class использует массив символов для сохранения строк, следующим образом: Поскольку существует «окончательный» модификатор, вы можете знать, что строковые объекты неизменны.
Частная конечная стоимость символа [];
Как StringBuilder, так и StringBuffer унаследованы от класса AbstractStringBuilder. В AbstractStringBuilder массивы персонажей используются для сохранения струн. Следующим образом видно, что оба объекта изменяются.
char [] значение;
2. Это многопоточно и безопасно
Объекты в строке неизменны, поэтому их можно понимать как константы, которые, очевидно, являются защищенными потоком.
AbstractStringBuilder - это общественный родительский класс StringBuilder и StringBuffer, который определяет некоторые основные операции строк, такие как ExpandCape, добавление, вставка, индекс и другие публичные методы.
StringBuffer добавил блокировку синхронизации в метод или блокировку синхронизации к вызываемому методу, поэтому он безопасен для потока. См. Следующий исходный код:
public Synchronized Stringbuffer reverse () {super.reverse (); вернуть это;} public int indexof (string str) {return indexof (str, 0); // Существует публичный синхронизированный метод int indexof (String Str, int fromindex)}StringBuilder не добавляет блокировки синхронизации в метод, поэтому он не является безопасным.
3. StringBuilder и StringBuffer в общем
StringBuilder и StringBuffer имеют публичные родительские классы AbstractStringBuilder ( Abstract Class ).
Одним из различий между абстрактными классами и интерфейсами является то, что некоторые публичные методы подклассов могут быть определены в абстрактных классах. Подклассы должны только добавлять новые функции и не нужно повторять существующие методы; В то время как интерфейсы определяют только методы и константы.
Методы StringBuilder и StringBuffer будут называть публичные методы в AbstractStringBuilder, таких как Super.Append (...). Просто StringBuffer добавит в метод синхронизированный ключевой слов и синхронизирует его.
Наконец, если программа не является многопоточной, то использование StringBuilder более эффективно, чем StringBuffer.
Углубленная статья подробно анализируется различия между String, StringBuffer и StringBuilder в Java-это все контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.