2

お気に入り

public static student[] arr = new student[10];

現在、学生はいくつかのインスタンス変数name(String)とを持つクラスage(int)です。この行が実行されるとすぐに何が起こるか知りたい?? 10 個の参照すべてにメモリが割り当てられますか、それとも個別に割り当てる必要がありますか?? アクセスしようとしたらstudent[5].age?メモリ割り当ての状態を知りたい..ありがとう.......

4

5 に答える 5

3

上記のステートメントが実行されると、JVM は 10 個の連続したメモリ ロケーションを作成し、それぞれが への参照を保持するのに十分な大きさになりますstudent。ただし、この配列には参照は含まれませんnullarr[0] = new student();オブジェクトのようなステートメントを実行するstudentと、ヒープ上に作成され、その参照が に保存されarr[0]ます。配列もヒープに割り当てられることに注意してください。

したがって、10 個studentのオブジェクトを作成すると、それぞれがヒープのどこかに割り当てられますが、それらの参照は次の場所に格納されます。arr

于 2013-10-16T10:04:30.730 に答える
2

はい

public static student[] = new student[10];

その行が実行されるとすぐに、JVM10 人の学生にメモリを割り当てますreferences

Arrays の公式ドキュメントから、フローを見てください。

  // declares an array of integers
        int[] anArray;

        // allocates memory for 10 integers
        anArray = new int[10];

        // initialize first element
        anArray[0] = 100;
于 2013-10-16T09:56:15.347 に答える
2

オブジェクトの配列を作成すると、参照変数のみが作成されます。あなたの場合、学生クラスの変数を参照してください。

次の図では、一連の参照変数が作成されています。その後、後でそれらの参照変数を実際のオブジェクトに向けることができます。

犬のオブジェクト配列

于 2013-10-16T10:06:36.273 に答える
1

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 で終了します。

于 2013-10-16T10:00:48.540 に答える
0

10 個の参照すべてがメモリを取得しますか、それとも個別に割り当てる必要がありますか?

10 の参照用のスペースが得られます。これらの参照は に初期化されnullます。以外に設定したい場合nullは、個別に行う必要があります。

于 2013-10-16T09:57:01.533 に答える