String、StringBuffer、StringBuilder
可变性:
- String类使用 final 关键字修饰的字符数组保存字符串,所以String对象是不可变的
- StringBuffer和StringBuilder都继承自AbstractStringBuilder类,在AbstractStringBuilder类中保存字符串的字符数组没有用 final 修饰,所以这两种对象是可变的
线程安全:
- String的对象是不可变的,线程安全
- StringBuffer对方法加了同步锁,线程安全
- StringBuilder并没有对方法加同步锁,线程不安全
性能:
- String不可变,只会生成新的String对象,性能最差
- StringBuilder对比StringBuffer性能方面要高一些,但是StringBuilder是线程不安全的