日期:2014-05-20  浏览次数:20778 次

StringBuffer和StringBuilder有什么区别啊
笔试的时候考了个这个题,没答上来,哈哈,大神们说说吧
------解决方案--------------------
StringBuilder是jdk1.5之后出现的。因为是线程不同步的,所以效率会比StringBuffer高
------解决方案--------------------
StringBuilder和StringBuffer的区别只在于前者线程不安全,后者实现了所有方法的线程同步
StringBuffer由于实现了线程同步,所以在执行的时候会有加锁的资源消耗,效率较低
在不受到线程共享变量的影响情况下,都推荐使用StringBuilder
------解决方案--------------------
23. StringBuffer和StringBuilder的区别在于:java.lang.StringBuffer线程安全的可变字符序
列。一个类似于String的字符串缓冲区,但不能修改。StringBuilder与该类相比,通常应该
优先使用java.lang.StringBuilder类,因为它支持所有相同的操作,但由于它不执行同步,
所以速度更快。为了获得更好的性能,在构造StringBuffer和StringBuilder时应尽可能指定
它的容量。如果字符长度不超过16个字符就不用了.相同情况下StringBuilder比使用
StringBuffer仅能获得10%~15%左右的性能提升,但也冒多线程不安全的风险。除非你能确定
你的系统瓶颈在StringBuffer上,并且确定你的模块不会再运行在多线程模式下,否则还是
使用StringBuffer。
------解决方案--------------------
直接看源码最能说明问题了,StringBuffer的方法加了synchronized关键字,所以线程安全。