Разница между String StringBuffer и StringBuilder в Java

Ключевая разница - строка против StringBuffer против StringBuilder в Java
 

String, StringBuffer и String Builder являются классами в Java. Строка широко используется в программировании на Java. Как только объект String создан, его невозможно изменить. Каждый раз, когда происходит изменение строки, она создает новую строку. Даже если это соединение с существующей строкой, оно создает новую строку. Это приводит к потере памяти. Классы StringBuffer и StringBuilder в Java используются для изменения String. ключевое отличие между String, StringBuffer и StringBuilder в Java String - это класс для создания объекта типа String, представляющего собой последовательность символов, StringBuffer - это класс, используемый для изменения строк, обеспечивающий безопасность потоков, а StringBuilder - класс, используемый для изменения строк, которые не обеспечивают безопасность потоков..

СОДЕРЖАНИЕ

1. Обзор и основные отличия
2. Что такое строка в Java
3. Что такое StringBuffer в Java
4. Что такое StringBuilder в Java
5. Сходства между String StringBuffer и StringBuilder в Java
6. Сравнение бок о бок - String vs StringBuffer vs StringBuilder в Java в табличной форме
7. Резюме

Что такое строка в Java?

Класс String находится в пакете java.lang. Каждый раз, когда программист создает строку, это объект типа String. Строки имеют неизменное значение, как только объект создан, его нельзя изменить. Объекты, созданные с использованием классов-оболочек, таких как Integer, Byte, Float, Double, также являются неизменяемыми. Строковый литерал заключен в двойные кавычки. например "Привет, мир". Каждый раз, когда создается строковый литерал, виртуальная машина Java (JVM) проверяет пул констант String. Если String существует, возвращается ссылка на пул констант String. Если это новая строка, этот объект создается в постоянном пуле строк.

Рисунок 01: Java-программа, использующая String, StringBuffer и StringBuilder

Обратитесь к приведенному ниже коду.

Строка s1 = «Привет»;

s1 = s1 + «Мир»;

System.out.println (S1);

В первом операторе s1 ссылается на «Hello» в пуле констант String. Во втором утверждении JVM не изменяет существующую строку. Вместо этого он создает новую строку как «Hello World», и s1 теперь ссылается на эту новую строку. Выходящий объект «Hello» все еще существует в пуле констант String.

Если есть код, который,

Строка s1 = «Привет»;

Строка s2 = s1;

s1, s2 оба будут ссылаться на объект String «Hello».

Что такое StringBuffer в Java?

Класс StringBuffer используется для того, чтобы сделать объекты String изменяемыми. Следовательно, эти объекты могут быть изменены. StringBuffer определяет четыре конструктора. StringBuffer (), StringBuffer (размер int), StringBuffer (String str), StringBuffer (charSequence [] ch)

См. Код ниже,

StringBuffer s1 = new StringBuffer («Hello»);

s1.append ( «Мир»);

System.out.println (S1);

В утверждении 1 s1 ссылается на объект «Hello» в куче. Объект является изменяемым, потому что он создан с использованием StringBuffer. В операторе 2 «Мир» добавляется к тому же объекту «Привет» String.

Строковые объекты, созданные с помощью класса StringBuffer, могут сэкономить память. StringBuffer обеспечивает безопасность потоков, поскольку два потока не могут одновременно обращаться к одному и тому же методу в классе StringBuffer. Потокобезопасность снижает производительность StringBuffer. Класс StringBuffer содержит методы, такие как append (), insert (), reverse (), replace ().

Что такое StringBuilder в Java?

Класс StringBuilder используется для того, чтобы сделать объекты String изменяемыми. Следовательно, эти объекты могут быть изменены. Функциональность похожа на StringBuffer, но это не обеспечивает безопасность потоков. StringBuilder имеет конструкторы, такие как StringBuilder (), StringBuilder (int size), StringBuilder (String str).

См. Код ниже.

StringBuilder s1 = new StringBuilder («Привет»);

s1.append ( «Мир»);

System.out.println (S1);

В утверждении 1 s1 ссылается на объект «Hello» в куче. Объект является изменяемым, потому что он создан с использованием StringBuilder. В операторе 2 «Мир» добавляется к тому же объекту «Привет» String. Там нет создания совершенно нового объекта String.

Строковые объекты, созданные с помощью класса StringBuilder, могут сэкономить память. В отличие от StringBuffer, StringBuilder не обеспечивает безопасность потоков, поскольку два потока могут одновременно обращаться к одному и тому же методу в классе StringBuilder. Класс StringBuilder содержит методы, такие как append (), insert (), reverse (), replace ().

Каково сходство между String, StringBuffer и StringBuilder в Java?

  • Все может быть использовано для создания строк.

В чем разница между String StringBuffer и StringBuilder в Java?

Строка против StringBuffer против StringBuilder

строка Строка - это класс Java, который используется для создания объекта типа String, представляющего собой последовательность символов.
StringBuffer StringBuffer - это класс Java, который используется для создания объектов String, которые можно изменять с безопасностью потоков.
StringBuilder StringBuilder - это класс, который используется для создания строковых объектов, которые могут быть изменены без безопасности потока.
переменчивость
строка Строка является неизменным классом.
StringBuffer StringBuffer является изменяемым классом.
StringBuilder StringBuilder является изменяемым классом.
Поток безопасности
строка Методы String являются потокобезопасными.
StringBuffer Методы StringBuffer потокобезопасны и синхронизированы.
StringBuilder Методы StringBuilder не безопасны и не синхронизированы.
Производительность
строка Строка быстрая.
StringBuffer StringBuffer медленный.
StringBuilder StringBuilder быстр.

Резюме - Строка против StringBuffer против StringBuilder в Java 

String, StringBuffer и StringBuilder выглядят одинаково, но имеют разные значения. Все это классы Java. Разница между String, StringBuffer и StringBuilder в Java заключается в том, что String является классом для создания объекта типа String, который представляет собой набор символов, StringBuffer является классом, который используется для изменения строк и обеспечения безопасности потока, тогда как StringBuilder является класс, используемый для изменения строк, который не обеспечивает безопасность потока.

Загрузить PDF String против StringBuffer против StringBuilder в Java

Вы можете скачать PDF версию этой статьи и использовать ее в автономном режиме, как указано в примечании. Пожалуйста, загрузите PDF версию здесь Разница между String StringBuffer и StringBuilder в Java

Ссылка:

1. «Строка против StringBuffer против StringBuilder». JournalDev, 30 июля 2017 года. Доступно здесь
2. «Ява голодная». Разница между классами String, StringBuilder и StringBuffer с примером: Java | Ява Голодная. Доступна здесь 
3.tutorialspoint.com. «Строки Java.» Смысл. Доступна здесь