Unterschied zwischen String und StringBuffer

Es gibt viele Unterschiede zwischen String und StringBuffer. Eine Liste der Unterschiede zwischen String und StringBuffer finden Sie unten:

Nein.SchnurZeichenfolgenpuffer
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
String vs. StringBuffer

Leistungstest von String und StringBuffer

ConcatTest.java

  1. öffentliche Klasse  ConcatTest{   
  2.     öffentlicher statischer  String concatWithString() {   
  3.         Zeichenfolge t =  “Java” ;  
  4.         für  ( int  i= 0 ; i< 10000 ; i++){  
  5.             t = t +  “TPunkt” ;  
  6.         }  
  7.         gib  t zurück;  
  8.     }  
  9.     öffentlicher statischer  String concatWithStringBuffer(){   
  10.         StringBuffer sb =  new  StringBuffer( “Java” );  
  11.         für  ( int  i= 0 ; i< 10000 ; i++){  
  12.             sb.append( “Tpoint” );  
  13.         }  
  14.         return  sb.toString();  
  15.     }  
  16.     public static void  main(String[] args){    
  17.         lange  Startzeit = System.aktuelleZeitMillis();  
  18.         concatWithString();  
  19.         System.out.println( “Zeit, die durch Concating mit String benötigt wird: ” +(System.currentTimeMillis()-startTime)+ “ms” );  
  20.         startTime = System.aktuelleZeitMillis();  
  21.         concatWithStringBuffer();  
  22.         System.out.println( “Zeit, die von Concating mit StringBuffer benötigt wird: ” +(System.currentTimeMillis()-startTime)+ “ms” );  
  23.     }  
  24. }  

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.

InstanceTest.java

  1. öffentliche Klasse  InstanceTest{   
  2.     public static void  main(String args[]){    
  3.         System.out.println( “Hashcode-Test von String:” );  
  4.         Zeichenkette str= “java” ;  
  5.         System.out.println (str.hashCode());  
  6.         str=str+ “tpoint” ;  
  7.         System.out.println (str.hashCode());  
  8.    
  9.         System.out.println( “Hashcode-Test von StringBuffer:” );  
  10.         StringBuffer sb= new  StringBuffer( “java” );  
  11.         System.out.println (sb.hashCode());  
  12.         sb.append( “tpoint” );  
  13.         System.out.println (sb.hashCode());  
  14.     }  
  15. }  

Ausgabe:

Hashcode-Test von String:
3254818
229541438
Hashcode-Test von StringBuffer:
118352462
118352462

osky