正确创建对象数组
先从一段简单的错误代码切入,然后在后面提出正确的创建方法。
先考虑这段代码:
public class Student {
private int age;
private String name;
public void Student() {
this.age = 21;
this.name = "someone";
}
public void setAge (int age) {
this.age = age;
}
public int getAge() {
return this.age;
}
}
public class Test {
public static void main(String[] args) {
Student[] students = new Student [3];
students[0].setAge(18);
System.out.println(students[0].getAge());
}
}
运行结果如下,是一个空指针异常:
Exception in thread “main” java.lang.NullPointerException
at Test.main(Test.java:7)
分析原因
Student[] students = new Student [3]; 这一句创建了三个Student的声明,但并没有调用Student的构造方法,等价于,
Student s1;
Student s2;
Student s3;
因此,s1, s2, s3的对象实际上并没有被创建,在内存上也没有一块对应的空间。那么在对象还没有被创建之前,我们自然是不可以调用它的任何方法的。
正确的对象数组创建方法
public class Test {
public static void main(String[] args) {
int i;
Student[] students = new Student [3];
//实例化每一个元素
for (i = 0; i < students.length; i++) {
students[i] = new Student();
}
students[0].setAge(18);
students[1].setAge(30);
students[2].setAge(25);
System.out.println(students[0].getAge());
System.out.println(students[1].getAge());
System.out.println(students[2].getAge());
}
}