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

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

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

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

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

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

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

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

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

全部评论

相关推荐

字节一直是我的白月光,考虑到转正还是拒了日常实习。
从明天开始狠狠卷JV...:为什么你释放的offer没流到我头上
点赞 评论 收藏
分享
自由水:笑死了,敢这么面试不敢让别人说
点赞 评论 收藏
分享
昨天 11:02
中山大学 C++
字节刚oc,但距离九月秋招很近了有两段互联网实习,非腾讯字节。不敢赌转正,现在在纠结去还是不去如果实习俩月离职会有什么后果吗
阿城我会做到的:不去后悔一辈子,能否转正取决于ld的态度,只要他不卡,答辩就是走流程,个人觉得可以冲一把
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务