>本文讲解了Java String的不可变性:一旦创建,其值无法改变。这种设计是为实现字符串常量池、保证线程安全和系统安全性,并使其成为可靠的哈希键。 这是一个非常经典的Java面试题和核心概念。下面我将从“是什么”、“如何实现”和“为什么这么设计”三个方面来详细解释为什么Java中的对象是不可变的。 --- 1. 是什么:String的不可变性是什么意思? 不可变(Immutable)意味着,当一个对象被创建后,它内部的字符序列(the sequence of characters)就永远不能被改变了。 你可能会有疑问:“可是我明明可以这样做啊?” 看起来 的值被改变了,但实际上,这是一种错觉。在内存中发生的事情是: 1. JVM首先创建了一个对象,值为 "Hello",并让引用 指向它。 2. 当执行 时,JVM 创建了一个全新的对象,其值为 "Hello World"。 3. 然后,JVM将引用 指向这个新的对象。 4. 原来的 "Hello" 对象如果没有任何其他引用指向它,就会在未来的某个时候被垃圾回收器(Garbage Collector)回收。 所以,不是原始的对象...