下面的代码显示了NullPointerException
public class Q117d {
static int[] a;
public static void main (String[] args) {
a[-1] = 2;
}
}
Run Code Online (Sandbox Code Playgroud)
下面的代码显示了ArrayIndexOutOfBound异常
public class Q117c{
static int[] a;
public static void main(String[] args) {
a=new int[5];
a[0]=2;
a[2]=3;
a[-1]=2;
}
}
Run Code Online (Sandbox Code Playgroud)
为什么两个代码都显示不同的异常,因为在[-1]中都应该为空?
Dan*_*son 10
因为在第一个你还没有初始化.首先声明一个变量,它将分配一些内存.但只有当你告诉你a = new int[10]将分配一个确切的内存量,在这种情况下,10个整数......没有告诉这个数组的大小,它们是无处的分配(null)
在第二个你已经初始化,所以有一个数组的内存分配.但是没有声明[-1],因为数组在索引0处开始计数