StringBuilder 是自己的字符串缓冲区,而String没有,String每次进行+运算都会申请新的字符串对象,只要你用了+,他的结果就是 new出来的新字符串。。。
比如string a, 内存是 char[100], string b,的内存是char[50]
那么 a+b的结果就是。
new char[150]; 然后把char[100]和char[50]复制进去然后返回 char[150]。每次都这样,所以这个速度是很慢的,而且很浪费资源,不仅如此,string a=b;也是b复制一个副本给a,而不是引用b。。。
StringBuilder 有自己的存储区,比如他又100个字符,但他存储区是1000,那么Append50,就会写在100到150的位置,而不用new,这就是区别。。。