※ ChatGPTを利用し、要約された質問です(原文:JAVAのNEW配列生成とガベージコレクション解放)
JavaのNEW配列生成とガベージコレクション解放
このQ&Aのポイント
Javaの配列生成では、NEWを使った場合と使わない場合で挙動が異なります。
NEWを使わないで生成した配列は、メモリ内で直接値が格納されますが、NEWを使って生成した配列はメモリ内に残ります。
しかし、NEWを使って生成した配列は、ガベージコレクションによって解放されます。
JAVAのNEW配列生成とガベージコレクション解放
ある本に、IF文内での、JAVAの配列生成で、IF文のブロックを内で生成した配列が、ブロックを抜けた際の挙動が異なると書いてありました。
NEWを使わないで生成した配列では、解放されるが(例 int[] k = {10 , 20 , 30}; )
NEWを使って生成した配列(例 int[] hoge = new int {3}; )は
メモリー内に残ってしまうということでしたが、多分その後
ガベージコレクションで解放されると思いますので問題はないのですが
両者とも、メモリー内に作成(用意)された同じような変数の箱を利用しているのに
どうして挙動が異なるのでしょうか?
NEWを使わないで生成した配列kは、例えばk[0]の中にアドレス参照でなく
10という値がそのまま入るのでしょうか?
分かりやすく教えていただけると助かります。
よろしくお願いいたします。
お礼
KSOHさん コンパイラーの説明で大筋理解出来ました。ありがとうございました。