首页 > 代码库 > stringbuffer和stringbuilder
stringbuffer和stringbuilder
StringBuffer是线程安全的可变字符序列。长度可变,类型任意,最终都要转换为字符串存储。是一个字符串缓冲区,是一个容器。用于临时存储数据。不过StringBuffer缓冲区内部是由数组来存储的。
我们先来说说和数组不同。
数组必须有长度而且必须是固定长度,因为可变长度的数组的原理是新建数组并复制数组元素到新数组中。里面装的元素都是按照数组定义类型存储的,如:int[] arr={1,2,3},数组arr里的元素都必须是int类型。数组只有length属性。只要有数组就必须有角标存在。
而StringBuffer长度可变类型任意,但不能修改只要将任意类型都转成字符串进行添加皆可。而且zifuchuanzaichuangjianqianhuochuangjianzhoyongdejiushi字符串缓冲区,当字符串缓冲区把字符串调整了以后进行toString就变成了字符串。
可安全的用对多线程,必要时对这些方法进行同步。
String s="a"+2+"sd";的原理:
s=new StringBuffer().append("a").append(5).append("sd").toString();
主要操作是:append();insert();delete();reverse();反转
replace();替换
StringBuilder和StringBuffer的功能相同,StringBuilder是StringBuffer的等价类,是可变的字符序列,主要用于单线程,非同步。没有线程安全同步加载,不需要判断锁,所以速度更快。所以在大多数情况下使用StringBuilder效率更高。
stringbuffer和stringbuilder