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

Оглавление:

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

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

Видео: Разница между String StringBuffer и StringBuilder в Java
Видео: Java SE. Урок 27. Классы StringBuilder / StringBuffer и их методы 2024, Ноябрь
Anonim

Ключевая разница - String, StringBuffer и StringBuilder в Java

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

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

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

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

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

См. фрагмент кода ниже.

String s1=«Привет»;

s1=s1 + «Мир»;

System.out.println(s1);

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

Если есть такой код, String s1=«Привет»;

Строка s2=s1;

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

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

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

См. код ниже, StringBuffer s1=новый StringBuffer("Привет");

s1.append("Мир");

System.out.println(s1);

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

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=новый StringBuilder("Привет");

s1.append("Мир");

System.out.println(s1);

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

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

В чем сходство между String, StringBuffer и StringBuilder в Java?

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

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

String против StringBuffer против StringBuilder

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

Резюме - String, StringBuffer и StringBuilder в Java

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

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

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

Рекомендуемые: