1. String
is immutable, i.e, the contents of the string are not changed after
creation. Where as StringBuffer is mutable.
2. Performance
wise, StringBuffer is faster when performing concatenations. This is
because when you concatenate a String, you are creating a new Stirng
object every time since String is immutable. So StringBuffer is
preferrable while performing many concatenations.
Example
class StringVsStringBuffer{ static void concatStrings(){ String s = " "; String s1 = "a"; for(int i=0; i < 100000; i++){ s = s.concat(s1); } } static void concatStringBuffer(){ StringBuffer s = new StringBuffer(""); String s1 = "a"; for(int i=0; i < 100000; i++){ s.append(s1); } } public static void main(String args[]){ long time1 = System.currentTimeMillis(); concatStrings(); long time2 = System.currentTimeMillis(); concatStringBuffer(); long time3 = System.currentTimeMillis(); System.out.print("Time taken for String append is "); System.out.println((time2-time1) + " Milliseconds"); System.out.print("Time taken for StringBuffer append is "); System.out.println((time3-time2) + " Milliseconds"); } }
Output
Time taken for String append is 2377 Milliseconds Time taken for StringBuffer append is 4 Milliseconds
No comments:
Post a Comment