字符串是如何不可变的?

时间:2016-06-23 10:39:03

标签: java string immutability

如果String对象是不可变的,那为什么要打印“帮助”?

不应根据其不变性功能修改String对象s1。我困惑多年,请帮助我理解这一点:

代码

public static void main(String[] args) {

    String s1 = "Hello";

    s1 = "Help";

    System.out.println(s1);
}

输出

Help

1 个答案:

答案 0 :(得分:3)

您的第二项任务实际上是更改s1引用的String

仍然存在String“Hello”存在(在池中),无法更改。

您描述的行为可以通过创建s1 final来实现 - 在这种情况下,如果您尝试更改String s1引用的值,则会出现编译器错误。