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
展开
 我来答
xilucao
2008-11-27 · TA获得超过1376个赞
知道小有建树答主
回答量:656
采纳率:0%
帮助的人:580万
展开全部
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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式