java中String、StringBuffer及StringBuilder的区别

来源:互联网 发布:顺德法院淘宝司法拍卖 编辑:程序博客网 时间:2024/05/08 00:05

String:实用public final修饰的类。所以String类对象为不可变对象,一旦你修改了String对象的值,隐性重新创建了一个新的对象,释放原String对象。

String类是final修饰的,不能被继承。

StringBuffer和StringBuilder类对象为可修改对象,可以通过append()来修改值。

StringBuffer和StringBuilder都继承了Abstract StringBuilder(抽象类)。

StringBuffer大部分方法都是synchronized,也就是线程安全的,而StringBuilder就没有,所以,我们查看API可以知道,StringBuilder可以操作StringBuffer,但是StringBuffer不可以操作StringBuilder,这也是线程的原因;

所以,可想而知,StringBuffer的效率肯定没有StringBuilder,因为StringBuffer要维持同步锁,这肯定要消耗部分资源。

总结:

如果要操作少量的数据用:String

单线程操作字符串且操作较多数据:StringBuilder(线程不安全)

多线程操作字符串且操作较多数据:StringBuffer(线程安全)

执行速度:

StringBuilder > StringBuffer > String


0 0
原创粉丝点击