What are the difference between String, StringBuffer, and StringBuilder?
- The String class is immutable, however StringBuffer and StringBuilder classes are not immutable. There's no reason to use a StringBuffer or StringBuilder unless you're planing on changing the contents.
- The String class overrides the default
equals()method, but StringBuffer and StringBuilder do not override the defaultequals()method in Object class. The equals method for classObjectimplements the most discriminating possible equivalence relation on objects; that is, for any non-null reference valuesxandy, this method returnstrueif and only ifxandyrefer to the same object (x == yhas the valuetrue). For example,public class Program {
public static void main(String [] args) {
String s1 = new String("Hello World");
String s2 = new String("Hello World");
System.out.println("s1.equals(s2):" + s1.equals(s2));
StringBuffer sb1 = new StringBuffer("Hello World");
StringBuffer sb2 = new StringBuffer("Hello World");
System.out.println("sb1.equals(sb2):" + sb1.equals(sb2));
StringBuilder sd1 = new StringBuilder("Hello World");
StringBuilder sd2 = new StringBuilder("Hello World");
System.out.println("sd1.equals(sd2):" + sd1.equals(sd2));
}
}The output is
s1.equals(s2):true
sb1.equals(sb2):false
sd1.equals(sd2):false - A StringBuffer class implements a mutable sequence of characters. A StringBuffer class is like a String, but can be modified. At any point in time it contains some particular sequence of characters, but the length and content of the sequence can be changed through certain method calls.
String buffers are safe for use by multiple threads. The methods are synchronized where necessary so that all the operations on any particular instance behave as if they occur in some serial order that is consistent with the order of the method calls made by each of the individual threads involved.
- The StringBuilder class provides an API compatible with StringBuffer, but with no guarantee of synchronization. The StringBuilder class is designed for use as a drop-in replacement for StringBuffer in places where the string buffer was being used by a single thread (as is generally the case). Where possible, it is recommended that this class be used in preference to StringBuffer as it will be faster under most implementations.
Most Recent java Faqs
- How to uncompress a file in the gzip format?
- How to make a gzip file in Java?
- How to use Java String.split method to split a string by dot?
- How to validate URL in Java?
- How to schedule a job in Java?
- How to return the content in the correct encoding from a servlet?
- What is the difference between JDK and JRE?
Most Viewed java Faqs
- How to read input from console (keyboard) in Java?
- How to use HttpURLConnection POST data to web server?
- How to add BASIC Authentication into HttpURLConnection?
- How to Retrieve Multiple Result Sets from a Stored Procedure in JDBC?
- What are class variables in Java?
- What are local variables in Java?
- How to Use Updatable ResultSet in JDBC?