Java的引用数据类型在使用前为什么要初始化

在今天的学习当中,碰到了一个问题,在定义了引用类型的数组之后如果没有进行初始化,则会出行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.在初始化之前,数组的各个元素中存放的是内存数据,并且无法直接访问。这时,如果直接访问该元素,就会报空指针异常的错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值