开发者社区> 问答> 正文

关于java中的二维数组的空间分配问题

在学习java的过程中,碰到这样一个问题
二维数组的问题:
首先1:
规则二维数组的几种写法,其中有一种:
int a[][] = new int[4][10];
这个我是知道的,分配一个4*10的空间
但是:
接下来却写到:
a[0] = new int[10];
a[1] = new int[10];
我不明白的是刚开始已经分配过空间了,为什么后来还要分配呢?

展开
收起
蛮大人123 2016-06-13 14:36:17 3533 0
2 条回答
写回答
取消 提交回答
  • 首先要明确一点,在java中,数组被当做类,数组实例被当做对象(关于这点请看Class类源码注释)。

    第二点,不妨先考虑基本、简单的情况,根据第一点所说的,将数组实例看做对象,那么数组中的元素可以理解为对象中的字段,那么new一个一维数组即new一个数组对象,但之后你给该对象中的字段赋值了吗?很明显,没有。所以你还要另外赋值。

    第三点,关于你给的问题,就像第二点所说的,只不过数组对象中的字段是还是数组类型而已,所谓二维数组。

    第四点,作为补充,与本问题无直接联系,虽然java在语法层面上看一切皆对象,但要知道int类型等基本类型在作为局部变量的类型时,变量在底层实现的时候仍然是个基本类型。

    2019-07-17 19:35:57
    赞同 展开评论 打赏
  • 我说我不帅他们就打我,还说我虚伪

    数组的数组的含义是,这是一个数组,数组的每个元素是一个数组。
    数组的数组和二维数组的不同在于,数组的数组每个下标代表的数组可以不一样长,而二维数组是一样长的。
    比如
    `int a[][] = new int[4][];
    a[0] = new int[10];
    a[1] = new int[5];
    a[2] = null;
    a[3] = new int[1];`
    这样是完全允许的。

    2019-07-17 19:35:57
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载