Lorsque j'ai utilisé Java plus tôt, je savais qu'il y avait une classe appelée StringBuffer pour String avec des coutures plus longues. Après avoir tourné en C #, il y a aussi un type de fonction appelé StringBuilder.
Plus tard, lorsque je suis retourné à Java, j'ai trouvé que Java avait également StringBuilder, donc j'étais curieux de savoir pourquoi j'avais lancé StringBuilder après StringBuffer.
Il s'avère que StringBuilder de Java (le même que C #) est une sécurité non émouvante, et StringBuffer antérieur a un certain attribut de sécurité de thread. Bien sûr, le lancement de StringBuilder est principalement parce qu'il n'a pas besoin d'être utilisé dans plusieurs threads.
Le cas commun de StringBuilder (ou StringBuffer) est ::
Public String toString () {return new StringBuilder () .Appnd ("name:" + name) .Appnd ("foo:" + foo) .appnd ("bar:" + bar) .tring ();}
Dans ce cas, StringBuilder n'est pas un membre de la classe.
En conséquence, l'introduction de StringBuilder a apporté une grande amélioration des performances, et il n'y avait pas de problème de sécurité ...