Heim  >  Artikel  >  Java  >  Analyse des Unterschieds zwischen java_String und StringBuffer

Analyse des Unterschieds zwischen java_String und StringBuffer

高洛峰
高洛峰Original
2017-01-22 09:34:131267Durchsuche

Die von dieser StringBuffer-Klasse bereitgestellte Zeichenfolge kann geändert werden. Sie können StringBuffer verwenden, wenn Sie wissen, dass sich die Zeichendaten ändern werden. Normalerweise verwenden Sie StringBuffers, um Zeichendaten dynamisch zu erstellen.

Es gibt drei Klassen in Java, die für Zeichenoperationen verantwortlich sind.

1.Character arbeitet mit einem einzelnen Zeichen und

2.String arbeitet mit einer Zeichenfolge. Unveränderliche Klassen.

3.StringBuffer arbeitet auch mit einer Zeichenfolge, es handelt sich jedoch um eine Variablenklasse.

String:
ist ein Objekt, kein primitiver Typ.
ist ein unveränderliches Objekt. Sobald es erstellt wurde, kann sein Wert nicht geändert werden.
Änderungen an vorhandenen String-Objekten sind alle neu Erstellen Sie ein neues Objekt und speichern Sie den neuen Wert darin.
String ist eine endgültige Klasse, das heißt, sie kann nicht vererbt werden.

StringBuffer:
ist ein veränderbares Objekt Objekt wird nicht wie String neu erstellt
Es kann nur über den Konstruktor erstellt werden,
StringBuffer sb = new StringBuffer();
Hinweis: Es kann nicht über das Wertsymbol
sb bezahlt werden = "Willkommen hier!";//Nachdem das Fehlerobjekt erstellt wurde, wird Speicherplatz im Speicher zugewiesen und zunächst ein Nullwert gespeichert. Beim Bezahlen des Werts an StringBuffer
können Sie dessen Anhang übergeben Methode.
sb.append("hello");

Das Obige ist ein Auszug, der im Internet üblich ist:

Die Adresse kann nicht geändert werden, die Länge und der Inhalt können geändert werden. Die Methode append() dient zum Anhängen. Wenn der reservierte Speicher überschritten wird, wird der Speicher verdoppelt.

Effizienzvergleich: StringBuffer ist höher als String. Da StringBuffer über reservierten Speicherplatz verfügt und ständig anhängt, wird nur ein Objekt bearbeitet. Die Zeichenfolge kann nicht geändert werden, und Objekte können nur wiederholt erstellt werden, um Änderungen vorzunehmen. ——Wenn Sie häufig Zeichenfolgen anhängen, ersetzen, ändern, einfügen und löschen, verwenden Sie am besten StringBuffer. Wenn Sie String verwenden müssen, können Sie StringBuffer verwenden, um toString() aufzurufen und es in String zu konvertieren.

public static void main(String[] args) {
         String a="";
         long begin=System.currentTimeMillis();
         for (int i = 0; i <10000; i++) {
             a+=i;
         }
         long end=System.currentTimeMillis();
         System.out.println("String运行时间:"+(end-begin));
         System.out.println("-----------------");
         StringBuffer b=new StringBuffer();
         long begin2=System.currentTimeMillis();
         for (int i = 0; i <10000; i++) {
             b.append(i);
         }
         long end2=System.currentTimeMillis();
         System.out.println("StringBuffer运行时间:"+(end2-begin2));
     }
Meine Maschine ist ziemlicher Schrott und das Ergebnis nach der Ausführung ist

String-Laufzeit: 164593

--------------- --
StringBuffer-Laufzeit: 31

Und String verfügt über die Methode „contains“, StringBuffer jedoch nicht. enthält bedeutet enthalten. Hier können Sie sich daran erinnern, dass das Ausführungsergebnis der Methode „enthält“

wahr ist
 public static void main(String[] args) {
         String a="abc";
         boolean str=a.contains("b");
         System.out.println(str);
     }

. Detailliertere Erklärung der StringBuffer-Klasse in Java Bitte beachten Sie die PHP-chinesische Website für verwandte Artikel!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn