Maison >Java >javaDidacticiel >La différence entre StringBuffer et StringBuilder en Java
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 !