当我们在进行如下操作的时候
实际上做的并不是字符串的修改,而是创建了两个字符串,“字符串1”和”字符串2“
为什么这样说呢?
让我们来剖析一下String类的源码,了解其中的奥妙如何
首先,String类被final修饰表示一个final类,这就意味着String类不可被继承
其次,如下所示,在String中,用于真正存储值的value对象也被final修饰
这就表示,value一旦确定值后就不可改变?
所以这就是String对象不可变的原因了吗?不完全是
这里的不可变,指的是value的引用不可变,而非byte数组不可变,真正导致不可变的原因在于value是一个private类型的成员,不能被外界访问,而String类本身不提供任何操作byte数组的方法,所以我们说String是一个不可变的字符对象。