Javaにおけるnewの意味
Javaでプログラミングしているとちょくちょく”new”が出てきます。
この”new”は何を表すのか疑問に思った事はありませんか?
”new”が何を表すのか一言で言うとメモリ内に変数(コンストラクタ)を扱うための領域(オブジェクト領域)を作成します。
配列の宣言を例に説明してみます。
String array = new String[3];
(”String”をクラス名、”array”を変数(オブジェクト変数)、”String[3]”をコンストラクタ名と言います)
”String array”で文字列型変数arrayを宣言しています。
この時、メモリ内にはarrayを扱う領域が確保されます。しかし、確保された領域内にはarrayは配列全体を指す情報(参照情報)があるだけで、実データはありません。
そのため、イコールの後にある”new String[3]”で実データを扱うための領域を新たにメモリ内に確保します。
そして新たに確保した領域の場所をイコールでarray内に代入することで、arrayが配列として扱えるようになります。
実際に使用する場合でもarrayではなくarray[0]やarray[1]のように変数名の後に[数字]をつけて使用しますよね。
arrayという変数には実データがどこにあるのかという参照情報しか持っていないため、arrayとだけしても配列内のどこのデータのことなのかわからないから変数名の後にでどの場所にある情報かを指定するのです。これによってようやく場所を認識することができ、配列を扱うことができるのです。
ちなみに、”new”の概念はC言語をやったことのある人でしたらポインタと考え方は同じです。