-6

为什么 Java 字符串被认为是不可变的?我可以说String name = "Paul";,稍后将 name 值更改为name = "Henry";. 不变性从何而来?

4

3 回答 3

3

创建了一个新字符串,它们绝对是不可变的,顺便说一句。

你不能这样做:

String name = "Paul"; // in effect the same as new String("Paul");
name.setValue("Henry")

因为字符串是不可变的,所以您必须创建一个全新的对象。

于 2013-05-14T12:17:53.960 回答
1

对象本身没有改变。

你所做的是以下

name <- String("Paul")
name <- String("Henry")

String("Paul") 没有改变。

尝试以下操作:

String a = "test";
String b = a;
a = "test2";

System.out.println(b);
于 2013-05-14T12:17:52.770 回答
1

区分变量:name,它指的是一个String和它所指的String。

name 最初指向字符串“Paul”,后来您将其更改为指向其他位置,“Paul”本身不受影响。

考虑

 String name = "Paul";
 String name1 = name;

 name = "Peter";

name1 现在指的是什么?

于 2013-05-14T12:18:34.463 回答