Here we will explain the difference between String , StringBuilder and StringBuffer . As you will find that there are minor differences between the above mentioned classes.
String
- String is immutable( once created cannot be changed ) object.
- The object created as a String is stored in the Constant String Pool
- Every immutable object in Java is thread safe, that implies String is also thread safe.
- String cannot be used by two threads simultaneously.
- String once assigned cannot be changed.
Example
String demo = " hello " ;
// The above object is stored in constant string pool and its value cannot be modified.
demo = "Bye" ; //new "Bye" string is created in constant pool and referenced by the demo variable
// "hello" string still exists in string constant pool and its value is not overridden but we lost reference to the "hello" string
StringBuffer - StringBuffer is mutable means one can change the value of the object . - The object created through StringBuffer is stored in the heap . - StringBuffer has the same methods as the StringBuilder , but each method in StringBuffer is synchronized that is StringBuffer is thread safe .
Due to this it does not allow two threads to simultaneously access the same method. Each method can be accessed by one thread at a time.
But being thread safe has disadvantages too as the performance of the StringBuffer hits due to thread safe propert . Thus StringBuilder is faster than the StringBuffer when calling the same methods of each class.
String Buffer can be converted to the string by using toString() method.
Example:
StringBuffer demo1 = new StringBuffer("Hello") ;
// The above object stored in heap and its value can be changed.
demo1=new StringBuffer("Bye")
demo1=demo1.append("See You");
If you print demo1 you will get "HelloByeSee You"
StringBuilder - StringBuilder is same as the StringBuffer , i.e. the object is stored in heap and it can also be modified . - The main difference between the StringBuffer and StringBuilder is that StringBuilder is also not thread safe. It have all the methods of StringBuffer - StringBuilder is fast as it is not thread safe .
String
|
StringBuffer
|
StringBuilder
| |
Storage
|
Constant String Pool
|
Heap
|
Heap
|
Mutable
|
No
|
Yes
|
Yes
|
Thread Safe
|
Yes
|
Yes
|
No
|
Performance
|
Fast
|
Slow
|
Fast
|
Hope you guys like it. Let me now in comments if you guys have any doubts. Happy Learning !!!
No comments:
Post a Comment