[Java] Stringクラスはなぜイミュータブルなのですか?
解決したいこと
Stringクラスはなぜイミュータブルなのですか?
結城浩著「Java言語で学ぶデザインパターン入門【マルチスレッド編】」p.89冒頭に次のように記述があります。
「java.lang.Stringは文字列を表すクラスです。Stringクラスには、文字列の内容を変更するメソッドが用意されていません。つまり、Stringのインスタンスが表している文字列の内容は、決して変化しないことになります。」
ここで疑問が湧きます。例えば、
String s = "abc";
と、String インスタンスsにabcと文字列を与えます。
次に、sに別の文字列を与えます。
s = "DEF";
もちろん、Stringのインスタンス sの文字列は変更できます。「変更できる」ということは、「Stringのインスタンスが表している文字列の内容は、変化している」ように思うのですが、違うのでしょうか?
著者の言わんとすることや、私の理解の足らないところを、ご指摘いただければと思います。
よろしくお願いします。