string类型的被赋值以后,不可以改变了,stringbuffer 的值是可以改变的,而且容量固定,stringbuilder的容量不固定,StringBuffer 是线程安全的,StringBuilder 是线程不安全的,所以效率比起来 StringBuilder要比StringBuffer快。 一般单线程的程序使用StringBuilder比较好,多线程的情况下可以自己加锁,也可以 直接使用StringBuffer , String对象一经创建就不会发生变化了,即便是赋新值也不是在原对象的基础上改变, 而是创建一个新的字符串对象,将引用指向这个新的对象,会造成空间的浪费,效率较低 StringBuffer只创建一个对象,是在同一个实例的基础之上追加,效率更高,当需要用 到String的时候toString就可以了 |