Java创建二维数组与C语言中不同的一点

Java创建二维数组的方式中有这么一种:

int[][] a = new int[3][];

这种方式省略了列数,但是没有省略行数,这一点与C语言中“可以省略行数,不能省略列数”完全相反,这是需要注意的。
为什么C语言不能省略列数,这是因为:

这主要是因为C语言关于二维数组的定义。C语言中二维数组的每个元素都是相同大小的一维数组。所以只要确定了列数,再根据定义的时候用到的行数,就可以给出占用的内存。但如果在定义的时候没有说明列数,就会导致内存出错。

而Java语言不能省略行数是因为:

Java二维数组的数组名存放在栈里,而堆里存放具体的数据。我们在定义的时候先在栈里申请行数,然后具体需要用到哪一个一维数组的时候再申请堆的内存。所以可以省略列数,不能省略行数。

所以在Java里,int[][] a = new int[][2]是错误的方式。

感谢博客:java和C语言定义二维数组的区别

全部评论

相关推荐

狠赚笔第一人:学计算机自己不努力怪大环境?我大一就拿到了美团大厂的offer,好好看看自己有没有努力查看图片
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务