这里的可变和不可变是相对的来说的,你感觉的变化其实就是 a 重新指向了一个新的字符串地址:也即是a + “abc” ,但是原来的 “abc”还在内存中,是无法改变的
api中这么说的String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。
理解这个东西要明确的知道你 String 出来的 a 其实不是一个真正的 字符串,而是一个指向字符串的引用,也就是内存中的地址值。
越是简单的问题解释起来越费劲儿。 |