Maison  >  Article  >  Java  >  La différence entre StringBuffer et StringBuilder en Java

La différence entre StringBuffer et StringBuilder en Java

高洛峰
高洛峰original
2017-01-22 11:44:221551parcourir

Quand j'utilisais Java plus tôt, je savais qu'il existait une classe appelée StringBuffer, qui était utilisée pour assembler des chaînes plus longues. Après être passé à C#, il existe également une classe avec des fonctions similaires appelée StringBuilder. L'abréviation est sb, ce qui est très facile à retenir.

Quand je suis ensuite revenu à Java, j'ai découvert que Java avait également StringBuilder, j'étais donc curieux de savoir pourquoi StringBuilder avait été introduit après StringBuffer.

Il s'avère que StringBuilder de Java (comme C#) n'est pas thread-safe, alors que l'ancien StringBuffer possède certaines propriétés de sécurité des threads. Bien entendu, StringBuilder a été introduit principalement parce qu’il n’a pas besoin d’être utilisé dans des situations multithread.

Les cas d'utilisation courants de StringBuilder (ou StringBuffer) sont :

public String toString() {
 return new StringBuilder()
  .append("Name: " + name)
  .append("Foo: " + foo)
  .append("Bar: " + bar)
  .toString();
}

Dans ce cas, StringBuilder n'est pas un membre de classe, c'est juste une variable locale, là il n'est pas du tout question de multi-threading.

En conséquence, l'introduction de StringBuilder a apporté une énorme amélioration des performances, et il n'y a aucun problème de sécurité...

Pour plus d'articles sur la différence entre StringBuffer et StringBuilder en Java, faites attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn