Heim  >  Artikel  >  Java  >  Differenzanalyse zwischen java_String und StringBuffer

Differenzanalyse zwischen java_String und StringBuffer

巴扎黑
巴扎黑Original
2017-05-21 14:18:031413Durchsuche

Die JAVA-Plattform bietet zwei Klassen: String und StringBuffer, die Zeichenfolgen speichern und verarbeiten können, also Zeichendaten, die mehrere Zeichen enthalten. Die String-Klasse stellt numerisch unveränderliche Strings bereit.

Die von dieser StringBuffer-Klasse bereitgestellte Zeichenfolge wird geändert. 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. Das Folgende ist meine eigene hinzugefügte Meinung:

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.

Der Code lautet wie folgt:

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 hat eine enthält-Methode, StringBuffer jedoch nicht. Enthält bedeutet Einschließen. Hier können Sie sich daran erinnern, dass der


-Code der Methode wie folgt lautet:

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

wahr

Das obige ist der detaillierte Inhalt vonDifferenzanalyse zwischen java_String und StringBuffer. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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