打开StringBuffer类的代码,可以看到注释:StringBuffer是jdk1.0就推出的。
看代码,因为StringBuffer继承了类AbstractStringBuilder,
AbstractStringBuilder底层和string一样,用的char数组来表示字符串,不过没有用修饰符 private final
所以,这个字符串是可被访问,并可变的。
StringBuffer类中,修饰字符串的操作方法,使用了synchronized 关键字
从而保证线程安全的,但因此,因为每次操作字符串时,都会加锁,所以性能比较低。
因此,JDK1.5推出了StringBuilder。
StringBuilder也继承了类AbstractStringBuilder,所以他的字符串也是可被访问,并可变的
StringBuilder 的操作字符串的方法里,没有加锁,所以就无法保证线程安全,但是相对更高效一些。
补充:与
StringBuffer是一个字符串的缓冲区,相当于一个容器,容器中可以装字符串,并且能够对这些字符串进行append、insert、replace、reserve,这样的操作。