お気に入り
public static student[] arr = new student[10];
現在、学生はいくつかのインスタンス変数name(String)
とを持つクラスage(int)
です。この行が実行されるとすぐに何が起こるか知りたい?? 10 個の参照すべてにメモリが割り当てられますか、それとも個別に割り当てる必要がありますか?? アクセスしようとしたらstudent[5].age
?メモリ割り当ての状態を知りたい..ありがとう.......
お気に入り
public static student[] arr = new student[10];
現在、学生はいくつかのインスタンス変数name(String)
とを持つクラスage(int)
です。この行が実行されるとすぐに何が起こるか知りたい?? 10 個の参照すべてにメモリが割り当てられますか、それとも個別に割り当てる必要がありますか?? アクセスしようとしたらstudent[5].age
?メモリ割り当ての状態を知りたい..ありがとう.......
上記のステートメントが実行されると、JVM は 10 個の連続したメモリ ロケーションを作成し、それぞれが への参照を保持するのに十分な大きさになりますstudent
。ただし、この配列には参照は含まれませんnull
。arr[0] = new student();
オブジェクトのようなステートメントを実行するstudent
と、ヒープ上に作成され、その参照が に保存されarr[0]
ます。配列もヒープに割り当てられることに注意してください。
したがって、10 個student
のオブジェクトを作成すると、それぞれがヒープのどこかに割り当てられますが、それらの参照は次の場所に格納されます。arr
はい
public static student[] = new student[10];
その行が実行されるとすぐに、JVM
10 人の学生にメモリを割り当てますreferences
。
Arrays の公式ドキュメントから、フローを見てください。
// declares an array of integers
int[] anArray;
// allocates memory for 10 integers
anArray = new int[10];
// initialize first element
anArray[0] = 100;
オブジェクトの配列を作成すると、参照変数のみが作成されます。あなたの場合、学生クラスの変数を参照してください。
次の図では、一連の参照変数が作成されています。その後、後でそれらの参照変数を実際のオブジェクトに向けることができます。
public static student[] arr = new student[10];
10 人の生徒にメモリを割り当てます。これらのメモリは null で埋められます。
したがって、実際のオブジェクトへの参照が存在しないため、ここではアクセスできstudent[5].age
ません。
以下のようにオブジェクト参照を個別に作成する必要があります
for(int i=0;i<10;i++){
student[i]= new Student();
}
実際のオブジェクト参照を作成する前に Student[5].age にアクセスすると、NullPointerException で終了します。
10 個の参照すべてがメモリを取得しますか、それとも個別に割り当てる必要がありますか?
10 の参照用のスペースが得られます。これらの参照は に初期化されnull
ます。以外に設定したい場合null
は、個別に行う必要があります。