java高手;关于二维数组的空指针问题.
int[][]a=newint[4][];System.out.println(a[0]);结果是nullSystem.out.println(a[0][1]);结果是空...
int[][] a = new int [4][];
System.out.println(a[0]);结果是null
System.out.println(a[0][1]);结果是空指针错误
为什么是这样的?
int[][] a=new int[4][5];
System.out.println(a[0]);
System.out.println(a[0][1]);
我运行过了,上面两句的a[0]和a[0][1] 各是什么意思,它的结果和我的为什么不同,麻烦高手再具体解释一下,thank you 展开
System.out.println(a[0]);结果是null
System.out.println(a[0][1]);结果是空指针错误
为什么是这样的?
int[][] a=new int[4][5];
System.out.println(a[0]);
System.out.println(a[0][1]);
我运行过了,上面两句的a[0]和a[0][1] 各是什么意思,它的结果和我的为什么不同,麻烦高手再具体解释一下,thank you 展开
1个回答
展开全部
java采用“数组的数组”定义多维数组,也就是说a[0]是放在栈内存中的一个引用,你new的时候只new了从a[0]到a[3]3个引用,并没有指明它们具体指向哪,系统就给它们赋了默认的空值。
你根本没有为其分配堆空间何来a[0][1]?当然提示错误了。
改成:
int[][] a=new int[4][5];
System.out.println(a[0]);
System.out.println(a[0][1]);试试
说明一下:上面的二维数组a[4][5]是这样的:有4个一维数组a[0]到a[3]它们分别指向4个长度为5的一维数组
----------------------------------------------------------------------
a[0]是个引用,这个引用指向一个数组,a[0][1]是个元素,这个元素在数组
a[0]中,就好比你定义了个int[] b=new int[3],其中b[1]属于数组b一样
它们的关系见这里:http://hi.baidu.com/xilucao/album/item/fac5fe50f7c116401138c22f.html
你根本没有为其分配堆空间何来a[0][1]?当然提示错误了。
改成:
int[][] a=new int[4][5];
System.out.println(a[0]);
System.out.println(a[0][1]);试试
说明一下:上面的二维数组a[4][5]是这样的:有4个一维数组a[0]到a[3]它们分别指向4个长度为5的一维数组
----------------------------------------------------------------------
a[0]是个引用,这个引用指向一个数组,a[0][1]是个元素,这个元素在数组
a[0]中,就好比你定义了个int[] b=new int[3],其中b[1]属于数组b一样
它们的关系见这里:http://hi.baidu.com/xilucao/album/item/fac5fe50f7c116401138c22f.html
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询