为什么Java字符串被认为是不可变的?我可以说String name = "Paul";
以及稍后将名称值更改为name = "Henry";
。不变性来自何处?
答案 0 :(得分:3)
创建一个新字符串,它们绝对是不可变的,并且实际上是btw。
你不能这样做:
String name = "Paul"; // in effect the same as new String("Paul");
name.setValue("Henry")
因为字符串是不可变的,你必须创建一个全新的对象。
答案 1 :(得分:1)
对象本身没有改变。
您所做的是以下
name <- String("Paul")
name <- String("Henry")
字符串(“Paul”)未被更改。
尝试以下方法:
String a = "test";
String b = a;
a = "test2";
System.out.println(b);
答案 2 :(得分:1)
区分变量:name,它指的是String和它引用的String。
名称最初指向字符串“Paul”,稍后您将其更改为指向其他位置,“Paul”本身未受影响。
考虑
String name = "Paul";
String name1 = name;
name = "Peter";
name1现在指的是什么?