在今天的学习当中,碰到了一个问题,在定义了引用类型的数组之后如果没有进行初始化,则会出行NotPointFound错误。具体代码见下:
public class Test {
public static void main(String[] args) {
Random r = new Random();
Student [] stu = new Student[20];
int j = 1;
for(Student s :stu) {
s.setNumber(j++);
s.setScore(r.nextInt(50)+1);
s.setScore(r.nextInt(3)+1);
}
for(int i = 0;i<stu.length;i++) {
System.out.println(stu[i]);
}
}
原来,当定义了一个引用类型的数组时,系统做的工作是:
1.在堆内存当中开辟指定长度的内存空间。
2.返回数组的首地址给引用类型的数组变量,作为堆内存的引用。并且由于对象的大小是在类加载完成之后就可以确定的,因此可以利用索引下标和首地址访问到数组中的各个元素。
3.在初始化之前,数组的各个元素中存放的是内存数据,并且无法直接访问。这时,如果直接访问该元素,就会报空指针异常的错误。
Java的引用数据类型在使用前为什么要初始化
最新推荐文章于 2022-01-11 16:58:59 发布