-6

Java 文字列が不変と見なされるのはなぜですか? 私は言うことができString name = "Paul";、後で名前の値をに変更し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

文字列を参照している variable: name とそれが参照する文字列を区別します。

name はもともと文字列 "Paul" を指していましたが、後で別の場所を指すように変更しましたが、"Paul" 自体は影響を受けませんでした。

検討

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

 name = "Peter";

name1 は今何を参照していますか?

于 2013-05-14T12:18:34.463 に答える