String和StringBuffer,StringBuilder的区别是什么?String为什么是不可变的?
三者区别
可变性
简单的来说:String 类中使用 final 关键字字符数组保存字符串, private final char value[] ,所以 String 对象是不可变的。而 StringBuilder 与 StringBuffer 都继承自 AbstractStringBuilder 类,在AbstractStringBuilder 中也是使用字符数组保存字符串 char[]value 但是没有用 final 关键字修饰,所 以这两种对象都是可变的。 StringBuilder 与 StringBuffer 的构造方法都是调用父类构造方法也就是 AbstractStringBuilder 实现的,
AbstractStringBuilder.java
abstract class AbstractStringBuilder implements Appendable, CharSequence
{
char