Es gibt viele Unterschiede zwischen String und StringBuffer. Eine Liste der Unterschiede zwischen String und StringBuffer finden Sie unten:
Nein. | Schnur | Zeichenfolgenpuffer |
---|---|---|
1) | Die String-Klasse ist unveränderlich. | Die StringBuffer-Klasse ist änderbar. |
2) | String ist langsam und verbraucht mehr Speicher, wenn wir zu viele Strings verketten, da jedes Mal eine neue Instanz erstellt wird. | StringBuffer ist schnell und verbraucht weniger Speicher, wenn wir t-Strings verketten. |
3) | Die String-Klasse überschreibt die equals()-Methode der Object-Klasse. So können Sie den Inhalt zweier Strings mit der Methode equals () vergleichen. | Die Klasse StringBuffer überschreibt nicht die Methode equals() der Klasse Object. |
4) | Die String-Klasse ist langsamer, während eine Verkettungsoperation ausgeführt wird. | Die StringBuffer-Klasse ist beim Ausführen von Verkettungsvorgängen schneller. |
5) | Die String-Klasse verwendet den String-Konstantenpool. | StringBuffer verwendet Heap-Speicher |
Leistungstest von String und StringBuffer
- öffentliche Klasse ConcatTest{
- öffentlicher statischer String concatWithString() {
- Zeichenfolge t = “Java” ;
- für ( int i= 0 ; i< 10000 ; i++){
- t = t + “TPunkt” ;
- }
- gib t zurück;
- }
- öffentlicher statischer String concatWithStringBuffer(){
- StringBuffer sb = new StringBuffer( “Java” );
- für ( int i= 0 ; i< 10000 ; i++){
- sb.append( “Tpoint” );
- }
- return sb.toString();
- }
- public static void main(String[] args){
- lange Startzeit = System.aktuelleZeitMillis();
- concatWithString();
- System.out.println( “Zeit, die durch Concating mit String benötigt wird: ” +(System.currentTimeMillis()-startTime)+ “ms” );
- startTime = System.aktuelleZeitMillis();
- concatWithStringBuffer();
- System.out.println( “Zeit, die von Concating mit StringBuffer benötigt wird: ” +(System.currentTimeMillis()-startTime)+ “ms” );
- }
- }
Ausgabe:
Dauer der Verkettung mit String: 578 ms Dauer der Verkettung mit StringBuffer: 0 ms
Der obige Code berechnet die zum Verketten einer Zeichenfolge erforderliche Zeit mithilfe der String-Klasse und der StringBuffer-Klasse.
String- und StringBuffer-HashCode-Test
Wie wir in dem unten angegebenen Programm sehen können, gibt String einen neuen Hashcode zurück, während die Verkettung durchgeführt wird, aber die StringBuffer-Klasse gibt denselben Hashcode zurück.
- öffentliche Klasse InstanceTest{
- public static void main(String args[]){
- System.out.println( “Hashcode-Test von String:” );
- Zeichenkette str= “java” ;
- System.out.println (str.hashCode());
- str=str+ “tpoint” ;
- System.out.println (str.hashCode());
- System.out.println( “Hashcode-Test von StringBuffer:” );
- StringBuffer sb= new StringBuffer( “java” );
- System.out.println (sb.hashCode());
- sb.append( “tpoint” );
- System.out.println (sb.hashCode());
- }
- }
Ausgabe:
Hashcode-Test von String: 3254818 229541438 Hashcode-Test von StringBuffer: 118352462 118352462