Java
基础语法 string stringbuffer stringbuilder三者的差别
Java中String StringBuffer StringBuilder 是编程中经常使用的字符串类接下来从三个方面介绍三者的共同点和差别。
第一:可变与不可变
String
类中使用字符数组保存字符串,如下就是,因为有“final”修饰符,所以可以知道string对象是不可变的。
StringBuffer、StringBuilder 都是继承于
AbstractStringBuilder
类中
,
在该类中也是使用字符数组保存数据。我们都知道这两种对象都是可变的。
第二:线程安全
String类是Final修饰符修饰的,他的值是不可更改的,所以是
线程安全
的。
AbstractStringBuilder
是
Stringbuffer
和
Stringbuilder
的公共父类,定义了一些字符串基本操作。如
expandCapacity
、
append
、
insert
、
indexOf
等公共类。
StringBuffer
对方法加了同步锁或者对调用方法添加了同步锁,所以是
线程安全的
。
StringBuilder
类没有对方法添加同步锁,所以是
非线程安全
的。
第三:执行效率
执行效率关乎程序好坏,执行效率好的程序运行效率快,那么String、StringBuffer、 StringBuilder那个最快呢。
在这三者中 String执行效率是最慢的,StringBuffer执行效率差别不大,但是StringBuilder最快但是StringBuilder是非线性安全。
比较: StringBuilder > StringBuffer > String
四、总结
:
1.
如果操作少量数据 —用String
2.单线程操作字符串缓存区下操作数据—用StringBuilder
3.
多线程操作字符串缓存区下操作大量数据—用
StringBuffer