ホームページ  >  記事  >  Java  >  Javaで文字列が不変であることを証明する方法

Javaで文字列が不変であることを証明する方法

王林
王林転載
2023-04-29 08:46:121447ブラウズ

文字列が不変であることを証明する方法

私は文字列の不変性について 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 サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。