在学习java的过程中,碰到这样一个问题
二维数组的问题:
首先1:
规则二维数组的几种写法,其中有一种:int a[][] = new int[4][10];
这个我是知道的,分配一个4*10的空间
但是:
接下来却写到:a[0] = new int[10];
a[1] = new int[10];
我不明白的是刚开始已经分配过空间了,为什么后来还要分配呢?
首先要明确一点,在java中,数组被当做类,数组实例被当做对象(关于这点请看Class类源码注释)。
第二点,不妨先考虑基本、简单的情况,根据第一点所说的,将数组实例看做对象,那么数组中的元素可以理解为对象中的字段,那么new一个一维数组即new一个数组对象,但之后你给该对象中的字段赋值了吗?很明显,没有。所以你还要另外赋值。
第三点,关于你给的问题,就像第二点所说的,只不过数组对象中的字段是还是数组类型而已,所谓二维数组。
第四点,作为补充,与本问题无直接联系,虽然java在语法层面上看一切皆对象,但要知道int类型等基本类型在作为局部变量的类型时,变量在底层实现的时候仍然是个基本类型。
数组的数组的含义是,这是一个数组,数组的每个元素是一个数组。
数组的数组和二维数组的不同在于,数组的数组每个下标代表的数组可以不一样长,而二维数组是一样长的。
比如
`int a[][] = new int[4][];
a[0] = new int[10];
a[1] = new int[5];
a[2] = null;
a[3] = new int[1];`
这样是完全允许的。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。