Javaでは、文字列は不変です。文字列があり、それに変更を加えると、同じ変数によって参照される新しい文字列を取得します。
String str = "abc";
str += "def"; // now str refers to another piece in the heap containing "abcdef"
// while "abc" is still somewhere in the heap until taken by GC
C#ではintとdoubleは不変であると言われています。intを持っていて、後でそれを変更すると、同じ変数によって「ポイント」された新しいintを取得するということですか?同じことですが、スタックがあります。
int i = 1;
i += 1; // same thing: in the stack there is value 2 to which variable
// i is attached, and somewhere in the stack there is value 1
あれは正しいですか?そうでない場合、intはどのように不変ですか?