字符串如何不可变?
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 引用的值,您将遇到编译器错误。
如果 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 引用的值,您将遇到编译器错误。