String、StringBuilder、StringBuffer
String
真正不可变有下面几点原因:
- 保存字符串的数组被
final
修饰且为私有的,并且String
类没有提供/暴露修改这个字符串的方法。 String
类被final
修饰导致其不能被继承,进而避免了子类破坏String
不可变。
String:不可变,线程安全
StringBuilder:可变,单线程,线程不安全
StringBuffer:可变,多线程,线程安全(方法加了同步锁)
String
真正不可变有下面几点原因:
final
修饰且为私有的,并且String
类没有提供/暴露修改这个字符串的方法。String
类被 final
修饰导致其不能被继承,进而避免了子类破坏 String
不可变。