2016-06-23 11 views
2

Stringオブジェクトが不変の場合、なぜ「ヘルプ」が印刷されますか?文字列はどのように不変ですか?

Stringオブジェクトs1は、その不変性機能に従って変更しないでください。私は数年のために混乱しています、私はこのことを理解して助けてください:

コード

public static void main(String[] args) { 

    String s1 = "Hello"; 

    s1 = "Help"; 

    System.out.println(s1); 
} 

出力

Help 
+0

割り当て 's1 =" Help ";'は文字列プールに新しいオブジェクトを作成し、参照を 's1'に割り当てます。プール内の元の '' Hello''文字列は変更されていません。 –

答えて

2

実際に参照をs1はStringを変更しているあなたの第二の割り当て。

プール内に「Hello」のStringがまだ変更されていません。

説明した動作は、s1 finalとすることで実現できます。この場合、String s1が参照する値を変更しようとするとコンパイラエラーが発生します。

関連する問題