Java文字列がどのように不変であるかを正確に理解しようとしています。私はこれがおそらく簡単なコンセプトになるはずですが、いくつかのオンラインWebページを読んだ後、私はまだそれほど理解していません。Java文字列の仕組み
Java文字列が「不変」であることを理解できません。
Jacob Perkins
Jacob Perkins!
は、なぜ、この出来事文字列は不変であるために仮定されている場合:
public static void main(String[] args) {
String name = "Jacob Perkins";
System.out.println(name);
name = name + "!";
System.out.println(name);
}
私の出力は次のようである:私は現在、次のコードを持っていますか?文字列に値を再割り当てできるのはなぜですか?
'String' * variables *は不変ではありません(変数が異なるため!)新しい文字列を作成し、その参照を変数' name'に割り当てました。 – dlev
私はまだ理解していません。 Java文字列で「不変」という用語が表示されるのはなぜですか? – user2301187
@ user2301187:2つの変数が同じ文字列オブジェクトを指すことができます。文字列が変更可能な場合、ある変数の文字列への変更は、他の変数の参照を介して見ることができます。それらがそうでないので、すべての変数は、それが指している文字列が「見ていない間は変更できません」ことを知っています。これは、変更可能な文字列が恐ろしくなり、複雑さが増すためです。変更されないコピーが必要な場合はいつでも文字列のコピーを作成することを忘れてはならないでしょう。 – Patashu