黑马程序员技术交流社区

标题: 大家来帮忙,给我出问题,看了视频,也不知道效果。 [打印本页]

作者: 马富林    时间: 2014-1-3 21:45
标题: 大家来帮忙,给我出问题,看了视频,也不知道效果。
这个帖子,就用来做一波String类、StringBuffer类知识的问答,请大家给我出些问题,基础知识也好,知识应用也好。看了这么久视频,也不知道学的怎么样。看看自己吸收了多少。

作者: 李兴    时间: 2014-1-3 21:56
基础的
(1)StringBuffer与StringBuilder的区别
(2)String与StringBuffer的互转实现
作者: 马富林    时间: 2014-1-3 22:05
李兴 发表于 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();

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

作者: 马富林    时间: 2014-1-4 00:00
浮出一个美 发表于 2014-1-3 23:13
这个有意思,我以后有机会也来一次,到时你要来捧场哈。
我也问点问题吧。
为什么说StringBuilder是线程不 ...

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2