您的位置:首页 > 产品设计 > UI/UE

String,StringBuffer和StringBuilder的区别

2017-08-20 17:14 309 查看
一、String专门定义不变字符串,String类中使用字符数组保存字符串,是不可变的(private final char value[ ]),StringBuffer和StringBuilder都继承自AbstractStringBuilder类,在AbstractStringBuilder中也使用字符数组保存字符串(char  [ ]  value),这两种对象是可变的。

二、使用:String适合比较短的字符串,StringBuffer和StringBuilder适合动态增加的字符串。在实际使用过程中String+String这种在BS开发结构中是不提倡的,对性能影响较大,推荐使用StirngBuffer。

三、线程安全:String中对象是不可变的,是线程安全的。

AbstractStringBuilder 是StringBuffer和StringBuilder的公共父类,定义了一些字符串的基本操作,如expandCapacity,append,insert,indexof等公共方法。StringBuffer对方法加了同步锁或者对调用的方法加了同步锁·,所以是线程安全的。StringBuilder并没有对方法加同步锁,所以是非线程安全的。

四、性能区别:StringBuffer和StringBuilder的方法都会调用AbstractStringBuilder 中的公共方法,只是StringBuffer会在方法上加synchronized关键字精心同步,如果不是多线程,StringBuilder的效率高于StringBuffer高于String。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: