Table of Contents
Difference between String Class and String buffer class
- String class is Immutable whereas String Buffer class is Mutable.
- String class consumes more memory whenever we append too many strings, whereas String buffer consumes very less memory.
- String class performance is low as compared to string Buffer class when we concatenate too many strings, as proven in the following program of performance testing.
- Contents of String object can be compared by equals() method, as it overrides this method, whereas String buffer class do not override equals() method.
Performance Test of String and StringBuffer
Let us do a performance testing of String class and String Buffer Class and see what the result is. We have taken objects of both String class and String Buffer Class, than we have appended String value= “Android” to both for same time period, and checked time taken.
public class PerformanceTesting{ public static String concatinateString(){ String string = "Abhi"; for (int i=0; i<10000; i++){ string = string + "Android"; } return string; } public static String concatinateStringBuffer(){ StringBuffer stringbuffer = new StringBuffer("Abhi"); for (int i=0; i<10000; i++){ stringbuffer.append("Android"); } return stringbuffer.toString(); } public static void main(String[] args){ long startTime = System.currentTimeMillis(); concatinateString(); System.out.println("Time taken for Concatination with String: "+(System.currentTimeMillis()-startTime)+"ms"); startTime = System.currentTimeMillis(); concatinateStringBuffer(); System.out.println("Time taken for Concatination with StringBuffer: "+(System.currentTimeMillis()-startTime)+"ms"); } }
Output:
Time taken for Concatination with String: 465ms Time taken for Concatination with StringBuffer: 1ms
From output as shown above it is clear that String class takes more time than String Buffer class.
String and StringBuffer HashCode Test
Let us do Hash Code testing of String class and String Buffer Class and see what the result is. We have taken objects of both String class and String Buffer Class, than we have appended String value= “Android” to both objects. As shown in the following program.
public class HashCodeTesting{ public static void main(String args[]){ System.out.println("Hashcode testing of String:"); String string="Abhi"; System.out.println(string.hashCode()); string=string+"Android"; System.out.println(string.hashCode()); System.out.println("Hashcode testing of StringBuffer:"); StringBuffer stringbuffer=new StringBuffer("Abhi"); System.out.println(stringbuffer.hashCode()); stringbuffer.append("Android"); System.out.println(stringbuffer.hashCode()); } }
Output:
Hashcode testing of String: 2033922 1496841997 Hashcode testing of StringBuffer: 31168322 31168322
From output it is clear that hashcode of String after appending is changed, whereas hashcode of String Buffer remains same after appending another string.
Hi
Please can you explain and put an example code for internationalization in java?
Thanks a lot