DEV Community

Cover image for StringBuffer vs StringBuilder in Java
Hariharan S J
Hariharan S J

Posted on

StringBuffer vs StringBuilder in Java

1.Introduction

StringBuffer and StringBuilder are classes in Java used to create and modify mutable strings. Unlike the String class, their content can be changed without creating a new object. They are mainly used when frequent string modifications such as append, insert, or delete operations are required.

  • StringBuffer is thread-safe and synchronized, whereas StringBuilder is not synchronized and not thread-safe.

  • StringBuffer is slower in performance, whereas StringBuilder is faster and more efficient for single-threaded applications.

2.StringBuffer Class

StringBuffer is a mutable sequence of characters that is thread-safe. It is designed for multi-threaded environments where multiple threads may modify the same string object.

  • StringBuffer is thread-safe because its methods are synchronized.

  • Used when multiple threads access the same object.

  • Safer for concurrent operations.

(https://www.geeksforgeeks.org/java/stringbuffer-vs-stringbuilder/)

the program for the following StringBuilder is

in this program i have tested the StringBuffer classes and the methods in StringBuffer classes and also i had checked weather the hashcode of the normal string and the StringBuilder has the same hascode the resule as follows

yeah the results are here the normal string hashcode and the StringBuilder hashcode are not same because

Normal String Hashcode creates a new object everytime so the hashcode changes whereas in the StringBuffer concept the object will never be changed it can be changed in one object itself so a new object will not be created

3.StringBuilder

StringBuilder is a mutable sequence of characters similar to StringBuffer , but it is not thread-safe. It is optimized for single-threaded environments where performance is critical.

when i say the word thread safe and not thread safe it comes under multithreading concepts

Multi Threading (TBD)

  • Suitable for single-threaded applications.

  • Does not use synchronized methods.

  • Faster execution and better performance.

the main difference between StringBuffer and StringBuilder as follows

Feature StringBuffer StringBuilder
Introduced In JDK 1.0 JDK 1.5
Mutable Yes Yes
Thread Safe Yes No
Synchronized Yes No
Performance Slower Faster
Suitable For Multi-threaded Applications Single-threaded Applications
Memory Overhead Slightly Higher Slightly Lower
Extends AbstractStringBuilder AbstractStringBuilder
Package java.lang java.lang

Top comments (0)