原因:没有给数组分配内存空间
int a[] = null;
a[ ]只是一个引用变量,这个引用变量在栈内存中,实际保存的只是一个地址值,这个地址指向的是堆内存中的真正的数组对象,而数组对象应该由一系列的元素组成。
如果你建立数组对象时没有显式地指定初值,那就应该给数组分配内存空间,比如说 int [] a = new int[7]; 这样系统就会为这个数组实行动态初始化,也就是自动为数组元素赋初值,这里对应int[]类型的数组应该是int类型的元素,所以系统自动赋的初始值都是0。所以注意所有元素都是0和数组里没有元素是不一样的