如果String
对象是不可变的,那为什么要打印“帮助”?
不应根据其不变性功能修改String对象s1
。我困惑多年,请帮助我理解这一点:
代码
public static void main(String[] args) {
String s1 = "Hello";
s1 = "Help";
System.out.println(s1);
}
输出
Help
答案 0 :(得分:3)
您的第二项任务实际上是更改s1引用的String
。
仍然存在String
“Hello”存在(在池中),无法更改。
您描述的行为可以通过创建s1 final
来实现 - 在这种情况下,如果您尝试更改String s1引用的值,则会出现编译器错误。