Heim  >  Artikel  >  Java  >  Detaillierte Erläuterung der Unterschiede zwischen String, StringBuffer und StringBuilder in Java

Detaillierte Erläuterung der Unterschiede zwischen String, StringBuffer und StringBuilder in Java

黄舟
黄舟Original
2017-08-20 09:35:081622Durchsuche

In diesem Artikel werden hauptsächlich die Unterschiede zwischen String, StringBuffer und StringBuilder in Java sowie verwandte Informationen zu deren Verwendung vorgestellt. Im Entwicklungsprozess wird die String-Klasse häufig für Operationen verwendet.

Der Unterschied zwischen String, StringBuffer und StringBuilder in Java und wie man es verwendet

1 String-Klasse

Die Der Wert von String ist unveränderlich, was dazu führt, dass jede Operation an String ein neues String-Objekt generiert, was nicht nur ineffizient ist, sondern auch viel begrenzten Speicherplatz verschwendet.

String a = "a"; //Angenommen, a zeigt auf Adresse 0x0001

a = "b" //Nach der Neuzuweisung zeigt a auf Adresse 0x0002, aber 0x0001 Das in der Adresse gespeicherte „a“ existiert noch, aber a zeigt bereits auf eine andere Adresse.

Daher geht es bei String-Operationen eher um die Änderung der Zuweisungsadresse als um die Änderung des Werts.

2. StringBuffer ist eine veränderbare Klasse und eine Thread-sichere String-Operationsklasse, auf die kein neues Objekt erstellt wird. Jedes StringBuffer-Objekt verfügt über eine bestimmte Pufferkapazität. Wenn die Zeichenfolgengröße die Kapazität nicht überschreitet, wird keine neue Kapazität zugewiesen.


  StringBuffer buf=new StringBuffer(); //分配长16字节的字符缓冲区
  StringBuffer buf=new StringBuffer(512); //分配长512字节的字符缓冲区
  StringBuffer buf=new StringBuffer("this is a test")//在缓冲区中存放了字符串,并在后面预留了16字节的空缓冲区。

3. StringBuffer

Die Funktionen der StringBuffer- und StringBuilder-Klassen sind grundsätzlich ähnlich, die wichtigsten Der Unterschied liegt in der StringBuffer-Klasse. Die Methode ist multithreaded und sicher, während StringBuilder nicht threadsicher ist. Im Vergleich dazu ist die StringBuilder-Klasse etwas schneller. Für Strings, deren Werte sich häufig ändern, sollten die Klassen StringBuffer und StringBuilder verwendet werden.

1) Zunächst einmal sind String, StringBuffer und StringBuilder alle als letzte Klassen im JDK definiert, was bedeutet, dass sie nicht vererbt werden können.

2) Im Vergleich zu StringBuffer ist die Leistung von String geringer, da beim Ändern des String-Typs ein neues String-Objekt generiert wird Bei häufigen Änderungen sollte String nicht verwendet werden. Wenn Multithreading nicht berücksichtigt wird, sollte StringBuilder verwendet werden.

3) Nachdem StringBuffer ein Objekt generiert hat, rufen Sie beim Ausführen von String-Splice-Vorgängen einfach die Append-Methode auf. Es wird nur das Objekt selbst bearbeitet. Darüber hinaus ist StringBuffer threadsicher und daher für die Verwendung in Multithreads geeignet. Aus diesem Grund ist die Geschwindigkeit langsamer als bei StringBuilder.

4) Die Verwendung von StringBuilder ähnelt der von StringBuffer, ist jedoch nicht threadsicher, sodass es im Allgemeinen in einzelnen Threads verwendet wird und effizienter als StringBuffer ist.

Zusammenfassend lässt sich sagen, dass die Auswahl unter vielen Aspekten wie Speicherleistung, Thread-Sicherheit, Ausführungseffizienz usw. berücksichtigt werden muss. Die Antwort kann aus den obigen Vergleichen erhalten werden.

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Unterschiede zwischen String, StringBuffer und StringBuilder in Java. 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