Quando usei o Java mais cedo, sabia que havia uma classe chamada StringBuffer para string com costura mais longa. Depois de recorrer ao C#, também há um tipo de função chamado StringBuilder.
Mais tarde, quando me transferi de volta para Java, descobri que Java também tinha Stringbuilder, então fiquei curioso para saber por que lancei o StringBuilder depois do StringBuffer.
Acontece que o StringBuilder do Java (o mesmo que C#) é uma segurança não thread e o StringBuffer anterior tem um certo atributo de segurança do thread. Obviamente, o lançamento do StringBuilder é principalmente porque não precisa ser usado em vários threads.
O caso comum do StringBuilder (ou StringBuffer) é ::
Public string tostring () {return new stringbuilder () .appnd ("nome:" + nome) .appnd ("foo:" + foo) .appnd ("bar:" + bar) .tring ();}
Nesse caso, o StringBuilder não é um membro da classe.
Como resultado, a introdução do StringBuilder trouxe uma ótima melhoria de desempenho, e não houve problema de segurança ...