メソッドにローカル変数がある場合i
:
int i = 10;
次に、新しい値を割り当てます。
i = 11;
これにより、新しいメモリ ロケーションが割り当てられますか? それとも元の値を置き換えるだけですか?
これは、プリミティブが不変であることを意味しますか?
Immutable
オブジェクトの値が変更されるたびに、新しい参照がスタック上に作成されることを意味します。プリミティブ型の場合、不変性について話すことはできません。ラッパー クラスだけが不変です。Java はcopy_by_value
not by reference を使用します。
プリミティブ変数または参照変数を渡す場合は違いはなく、常に変数内のビットのコピーを渡します。したがって、プリミティブ変数の場合、値を表すビットのコピーを渡し、オブジェクト参照変数を渡す場合は、オブジェクトへの参照を表すビットのコピーを渡します。
たとえば、値が 3 の int 変数を渡すと、3 を表すビットのコピーが渡されます。
プリミティブが宣言されると、its primitive type can never change
その値は変更される可能性があります。
はい、それらは不変です。彼らは完全に不変です。
ここには素晴らしい説明が埋め込まれています。Go用ですが、Javaでも同じです。またはCファミリーの他の言語。