Difference between String & StringBuffer
Answer Posted / charan
A String is immutable, i.e. when it's created, it can never change.
A StringBuffer (or its non-synchronized cousin StringBuilder) is used when you need to construct a string piece by piece without the performance overhead of constructing lots of littleStrings along the way.
The maximum length for both is Integer.MAX_VALUE, because they are stored internally as arrays, and Java arrays only have an int for their length pseudo-field.
The performance improvement between Strings and StringBuffers for multiple concatenations is quite significant.
If you run the following test code, you will see the difference. On my ancient laptop with Java 6, I get these results:
Concat with String took: 1781ms
Concat with StringBuffer took: 0ms
Code:
public class Concat
{
public static String concatWithString()
{
String t = "Cat";
for (int i=0; i<10000; i++)
{
t = t + "Dog";
}
return t;
}
public static String concatWithStringBuffer()
{
StringBuffer sb = new StringBuffer("Cat");
for (int i=0; i<10000; i++)
{
sb.append("Dog");
}
return sb.toString();
}
public static void main(String[] args)
{
long start = System.currentTimeMillis();
concatWithString();
System.out.println("Concat with String took: " + (System.currentTimeMillis() - start) + "ms");
start = System.currentTimeMillis();
concatWithStringBuffer();
System.out.println("Concat with StringBuffer took: " + (System.currentTimeMillis() - start) + "ms");
}
}
| Is This Answer Correct ? | 0 Yes | 0 No |
Post New Answer View All Answers
When would you use a static class?
What are constants?
What is null data type?
Explain list interface?
Explain the JDB in depth & command line.
Give the hierarchy of inputstream and outputstream classes.
Can we use catch statement for checked exceptions?
Why is logger singleton?
Variables used in a switch statement can be used with which datatypes?
Explain an algorithm to find depth of a binary tree.
Can an arraylist be empty?
Can a class be a super class and a sub-class at the same time? Give example.
What is singleton class in java and how can we make a class singleton?
Can an anonymous class be declared as implementing an interface and extending a class in java programming?
Why stringbuilder is not thread safe in java?