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 !