在Java学习中,String、StringBuffer、StringBuilder三者是很重要的,在编写代码中经常使用到他们,那么深入的了解他们的异同是非常重要的,接下里我们详细剖析下这三个的异同之处
首先总结下这三者的区别:
1.基本区别
String的对象不可变,StringBuffer和StringBuilder的对象是可变的
2.性能区别
三者中StringBuilder执行速度最佳,StringBuffer次之,String的执行速度最慢(
String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,String对象一旦创建后该对象是不可更改的,后两者的对象是变量是可以更改的
)
3.安全区别
String、StringBuffer是线程安全的,StringBuilder是线程不安全的(
所以如果程序是单线程的使用StringBuilder效率高,如果是多线程使用StringBuffer或者String
)
其次总结下这三者的相同:
1.三者在java中都是用来处理字符串的
2.三个类都被final修饰,因此都是不可继承的
3.StringBuilder与StringBuffer有公共父类AbstractStringBuilder(
抽象类
)
接下来我们从源码和案例深入分析这三者: