文字列が不変であることを証明する方法
私は文字列の不変性について 2 つの記事を書きましたが、最後まで吐きそうになりました。でも、まだ理解していない生徒もいて、たまにプライベートメッセージを送ってくる人がいて、前の記事をお気に入りに入れて、聞かれたらリンクを送ります。
この混乱を引き起こす要因はたくさんあります。たとえば、Java は値渡しですか、それとも参照渡しですか? 文字列定数プールとは何ですか?
今回もそれについて話さなければなりません。とてもうんざりしていますが、それでも証明する必要があります!
public class StringImmutabilityTest { public static void main(String[] args) { String s1 = "沉默王二"; String s2 = s1; System.out.println(s1 == s2); s1 = "沉默王三"; System.out.println(s1 == s2); System.out.println(s2); } }
出力は次のとおりです:
true false 沉默王二
1)String s1 = "Silent Wang Er", Java は " を作成します。文字列定数プール内の文字列「Silent King 2」のオブジェクトを作成し、アドレス参照を s1
2) に割り当てます。文字列 s2 = s1、s2 および s1 は同じアドレス参照を指します。サイレントワン「コンスタントプールのワン・エル」。
つまり、この時点では s1 == s2 が true になります。
3)s1 = "Silent Wang San"、Java は文字列定数プールに文字列 "Silent Wang San" のオブジェクトを作成し、アドレス参照を s1 に割り当てますが、s2 は依然として " アドレスを指します文字列オブジェクト「Silent King II」の参照。
したがって、この時点では、s1 == s2 は false となり、s2 の出力結果は「Silent Wang Er」となり、文字列が不変であることがわかります。
以上がJavaで文字列が不変であることを証明する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。