StringBuffer против StringBuilder
Java - очень популярный объектно-ориентированный язык. В Java класс String предоставляется для хранения последовательности символов, которые нельзя изменить (после инициализации). Альтернативно, язык программирования Java предоставляет два типа изменяемых последовательностей символов. То есть, когда программистам необходимо изменить определенную строку (после инициализации), они должны использовать класс StringBuffer или класс StringBuilder вместо класса String. StringBuffer был представлен в JDK 1.0, а класс StringBuilder был представлен в JDK 1.5, фактически как замена классу StringBuffer (для однопоточных сред).
Что такое StringBuffer?
Класс StringBuffer был представлен в JDK 1.0. Класс StringBuffer принадлежит пакету java.lang и унаследован от универсального java.lang.object. Программисты не могут расширять его дальше, так как это последний класс. Класс StringBuffer реализует интерфейсы Serializable, Appendable и CharSequience. Объект класса StringBuffer может содержать последовательность символов, которая является изменяемой и поточно-ориентированной. Это означает, что он очень похож на объект String, но последовательность символов (длина и содержимое) может быть изменена в любое время после инициализации объекта StringBuffer. Однако это должно быть сделано с использованием специальных методов, предоставляемых классом StringBuffer. В классе StringBuffer есть две основные операции. Они предоставляются методами append () и insert (). Эти методы перегружены, поэтому они могут принимать данные любого типа, такие как целые и длинные. Оба метода сначала преобразуют любые входные данные в строку, а затем добавляют (добавляют или вставляют) символы соответствующей строки в существующий объект Stribbuffer. Метод append () добавляет преобразованную строку в конец существующего объекта StringBuffer, а метод insert () добавляет входные символы в указанную точку вставки..
Что такое StringBuilder?
Класс StringBuilder был представлен в JDK 1.5. API StringBuilder очень похож на API StringBuffer. Фактически, класс StringBuilder был введен в качестве замены для класса StringBuffer (для однопоточных приложений). Класс StringBuilder принадлежит пакету java.lang и унаследован от универсального java.lang.object. Это последний класс, и поэтому программисты не могут его расширить. Класс StringBuilder реализует интерфейсы Serializable, Appendable и CharSequience. Объект класса StringBuilder может содержать последовательность символов, которая является изменяемой, но не поточно-ориентированной. Это означает, что он очень похож на объект String, но строку можно изменить в любой момент. Но класс StringBuilder не обеспечивает синхронизацию, и поэтому считается, что он работает быстрее, чем класс StringBuffer. Класс StringBuilder предоставляет методы append () и insert () с точно такой же функциональностью, как в классе StringBuffer.
В чем разница между StringBuffer и StringBuilder?
Хотя классы StringBuilder и StringBuffer могут использоваться для изменяемых последовательностей символов в Java, они имеют ключевое отличие. В отличие от класса StringBuffer, класс StringBuilder не является поточно-ориентированным и не обеспечивает синхронизацию. Поэтому рекомендуется использовать класс StringBuilder вместо класса StringBuffer в однопоточных приложениях, поскольку утверждается, что класс StringBuilder будет намного быстрее, чем класс StringBuffer (при нормальных обстоятельствах).