关于java中的二维数组的空间分配问题-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

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

蛮大人123 2016-06-13 14:36:17 1762

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

Java
分享到
取消 提交回答
全部回答(2)
  • 权威输出
    2019-07-17 19:35:57

    首先要明确一点,在java中,数组被当做类,数组实例被当做对象(关于这点请看Class类源码注释)。

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

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

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

    0 0
  • 蛮大人123
    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];`
    这样是完全允许的。

    0 0
添加回答
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题