字符串如何不可变?

How String is immutable?

如果 String 对象是不可变的,那么为什么要打印 "Help"?

String 对象 s1 不应根据其不变性特性进行修改。困惑多年,请帮我理解一下:

代码

public static void main(String[] args) {

    String s1 = "Hello";

    s1 = "Help";

    System.out.println(s1);
}

输出

Help

您的第二个作业实际上是在更改 s1 引用的 String

仍然存在 String 个 "Hello"(在池中)无法更改。

您描述的行为将通过使 s1 final 实现 - 在这种情况下,如果您尝试更改 String s1 引用的值,您将遇到编译器错误。