浅谈StringBuffer

StringBuffer,由名字可以看出,是一个String的缓冲区,也就是说一个类似于String的字符串缓冲区,和String不同的是,它可以被修改,而且是线程安全的。StringBuffer在任意时刻都有一个特定的字符串序列,不过这个序列和它的长度可以通过一些函数调用进行修改。它的结构层次如下图:

 

StringBuffer是线程安全的,因此如果有几个线程同时操作StringBuffer,对它来说也只是一个操作序列,所有操作串行发生。

每一个StringBuffer都有一个容量,如果内容的大小不超过容量,StringBuffer就不会分配更大容量的缓冲区;如果需要更大的容量,StringBuffer会自动增加容量。和StringBuffer类似的有StringBuilder,两者之间的操作相同,不过StringBuilder不是线程安全的。虽然如此,由于StringBuilder没有同步,所以它的速度更快一些。

如上截图,StringBuffer是一个final 类【不能被继承,没有子类】,且继承了抽象类ABstracrStringBuilder并且实现了java io接口

注意看一些类文件上面的标注,since jdk1.0 就有StringBuffer, 而在网上要注解,在jdk5,该类得到一个补充,也就是常用来比较的StringBuilder,单个线程,速度更快,不执行同步,建议优先使用StringBuilder 巴拉巴拉

猜你喜欢

转载自www.cnblogs.com/qianjinyan/p/10636739.html