String,StringBuffer,StringBUIder
作者:互联网
-
String :String 表示字符串,是一种引用数据类型,不属于基本数据类型,是不可变类,。
-
String 对象声明后,将不可修改,及字符串“abs”一旦c创建,"abc"无法变成"abcd",也无法变成"ab"。
-
String是不可变对象,如果多个字符串进行拼接,将会形成多个对象,这样会造成内存溢出,会给垃圾回收带来工作量。
-
-
StringBuffer:StringBuffer 称为字符串缓冲区,它的工作原理是:预先申请一块内存,存放字符序列,如果字符序列满了,会重新改变缓存区的大小,以容纳更多的字符序列。StringBuffer 是可变对象,这个是 String 最大的不同
所有方法同步,线程安全,但是速度慢
-
StringBuiIder: 用法同StringBuffer,但是没有方法同步,线程不安全,但是速度快。
三者比较
-
可变性:String 类中使用 final 关键字字符数组保存字符串,private final char value[] ,所以 String对象是不可变的。StringBuiIder,StringBuffer可变。
-
线程安全:String,StringBuffer线程安全,Stringbuilder不安全;
-
效率:String类型改变时,会生成一个新的String对象,然后指针指向一个新的对象,Stringbuffer对象对本身进行操作,而不是生成新的对象。StirngBuilder 相比使用 StringBuffer 仅能获得 10%~15% 左右的性能提升,但却要冒多线程不安全的风险。
使用总结:
-
操作少量数据用String
-
单线程,大量数据用StringBuilder
-
多线程,大量数据用Stringbuffer
标签:字符,StringBUIder,String,对象,StringBuffer,线程,字符串 来源: https://www.cnblogs.com/CoderFBI/p/14520877.html