在java语言中,String是不可变类,String对象一旦被创建,其值不能被改变;而StirngBuffer是可变类,当对象被创建后,仍然可以对其值进行修改。
- 例如:String a =“2”;
- a=“3”;
- 这时很多人就会说,a的值不是已经发生变化了吗?为什么java规则说String对象没有发生变化呢?
- 原因:a的值从2变成3,是因为a的指向已经发生了变化(也就是说“2”的索引还在,“3”是另外一个索引了)。
- 而StringBuffer所指向的索引没有变化,只是索引对应的值发生变化
- 还不明白,上图!!!