初めに、いくつかの属性を持つ学生クラスをカスタマイズしました。学生が多いため、このクラスを配列として宣言したいのですが、異なる添え字を使用して配列内の異なるオブジェクトに値を割り当てると、常にnullポインター例外が報告されます
最初はコードはこんな感じ
package _4_9_test;
public class EightTwoTest {
public static class Test{
String name;
int num;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Test test[] = new Test[2];
test[0].name = "张珊";
test[0].num = 1;
test[1].name = "李四";
test[1].num = 2;
System.out.println(test[0].name+" "+test[0].num);
System.out.println(test[1].name+" "+test[1].num);
}
}
ドキュメントを読んだ後、配列を作成しても配列のメンバーにメモリが割り当てられないことがわかりました。
Test test[] = new Test[2];
データを保存する場所がありません。
各メンバーが宣言した後にのみ、このメンバーにメモリが割り当てられます
test[0] = new Test();
改善されたコードは次のようになります
package _4_9_test;
public class EightTwoTest {
public static class Test{
String name;
int num;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Test test[] = new Test[2];
test[0] = new Test();
test[0].name = "张珊";
test[0].num = 1;
test[1] = new Test();
test[1].name = "李四";
test[1].num = 2;
System.out.println(test[0].name+" "+test[0].num);
System.out.println(test[1].name+" "+test[1].num);
}
}