Java字符串是不可变的?

时间:2013-05-14 12:16:28

标签: java oop

为什么Java字符串被认为是不可变的?我可以说String name = "Paul";以及稍后将名称值更改为name = "Henry";。不变性来自何处?

3 个答案:

答案 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现在指的是什么?