No início, eu personalizei uma turma de alunos com vários atributos. Como existem muitos alunos, desejo declarar essa classe como uma matriz, mas quando atribuo valores a diferentes objetos na matriz por meio de diferentes subscritos, sempre relato uma exceção de ponteiro nulo
No começo, o código é assim
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);
}
}
Depois de ler a documentação, descobri que a criação da matriz não aloca memória para os membros da matriz.
Test test[] = new Test[2];
Não há lugar para armazenar dados.
Somente após a declaração de cada membro, esse membro receberá memória alocada
test[0] = new Test();
O código aprimorado se parece com isso
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);
}
}