简单了解String,StringBuffer,StringBuilder的区别
对于这段程序来说并没有真正修改aaa这个字符串常量,而是创建了一个新的字符串常量bbb
而StringBuffer和StringBuilder是可以改变的,修改时他不会创建一个新的对象。
那么StringBuilder和StringBuffer什么区别呢?
我们从他的源码进行分析,拿他们的append方法为例:
StringBuider:
StringBuffer:
可以看出StringBuffer比StringBuilder多了一个synchronized的修饰符,增加了锁的机制,所以StringBuffer是线程安全的
总结:
1.String是不可变的,如果要尝试修改,它会生成一个新的字符串对象,StringBuffer和StringBuilder是可变的。
2.StringBuffer是线程安全的,StringBuilder是线程不安全的,在单线程情况下StringBuilder效率更高。