A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

这个帖子,就用来做一波String类、StringBuffer类知识的问答,请大家给我出些问题,基础知识也好,知识应用也好。看了这么久视频,也不知道学的怎么样。看看自己吸收了多少。

4 个回复

倒序浏览
基础的
(1)StringBuffer与StringBuilder的区别
(2)String与StringBuffer的互转实现
回复 使用道具 举报
李兴 发表于 2014-1-3 21:56
基础的
(1)StringBuffer与StringBuilder的区别
(2)String与StringBuffer的互转实现

1:StringBuffer有锁,用于多线程;
StringBuilder没有锁,所以线程不同步,用于但线程,所以效率更高。
2:String转StringBuffer:
String str=new String();
StringBuffer sb=new StringBuffer(str);
StringBuffer转String:
sb.toString();

谢谢同学帮忙提问,嘻嘻
回复 使用道具 举报
这个有意思,我以后有机会也来一次,到时你要来捧场哈。
我也问点问题吧。
为什么说StringBuilder是线程不安全的,StringBuffer是线程安全的?可否举一个例子加上详细解释?
回复 使用道具 举报
浮出一个美 发表于 2014-1-3 23:13
这个有意思,我以后有机会也来一次,到时你要来捧场哈。
我也问点问题吧。
为什么说StringBuilder是线程不 ...

好的,一定来,谢谢提问
其实我的理解StringBuffer与StringBuilder的区别应该是有锁和没锁的区别;
StringBuffer这个容器有锁,一个线程想要操作这个容器的时候需要判断是否有其他线程在对这个线程进行操作,如果有,则等待,所以不会有因为多个线程对同一个容器进行操作导致的安全问题,当然因为每个线程在访问这个容器之前都要进行锁的判断,所以相对效率就会低些。
而StringBuilder容器则去掉了锁,这样一个线程对这个容器进行操作之前就不需要进行判断这个步骤了,提高了运行效率,这样也导致了多个线程同时操作同一个容器的可能性,于是就产生了安全问题,比如不同线程对StringBuilder中某一段子串进行重复删除之类等等。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马