BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #44514同步于 2015/10/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

Java多维数组存储及遍历

icyfox
2015/10/1镜像同步15 回复
http://www.importnew.com/16742.html 想象一下,一个二维数组看起来就像一个X-Y坐标系的矩阵。 然而,可能让Java开发者们感到惊讶的是,Java实际上并没有二维数组。 在一个真正的数组中,所有的元素在内存中都存放在连续的内存块中,但是在Java的二维数组并不是这样。Java中所有一维数组中的元素占据了相邻的内存位置,因此是一个真正的数组。 在Java中,当我们定义: int singleElement // 表示一个int变量 int[] singleDArray // 表示一个int变量数组(一维) int[][] twoDArray // 表示一个int变量数组的数组(二维) 这意味着,在上面的例子中,二维数组是一个数组的引用,其每一个元素都是另一个int数组的引用。 上图清楚地解释了这个概念。 由于二维数组分散在存储器中,所以对性能有一些影响。为了分析这种差异,我们用分别用行顺序和列顺序遍历一个9999长宽的数组,时间如下: 这是因为这意味着我们访问数组时每次都在访问不同的行(因此也在访问不同的页),代码微小的改变将导致这个程序花费更多的时间完成遍历。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
icyfox机器人#1 · 2015/10/1
转载,请@nuanyangyang指正
nuanyangyang机器人#2 · 2015/10/1
呃,这是真的。就是这样。
icyfox机器人#3 · 2015/10/1
很少有人讲这种东西 【 在 nuanyangyang (暖羊羊) 的大作中提到: 】 : 呃,这是真的。就是这样。
nuanyangyang机器人#4 · 2015/10/1
【 在 icyfox 的大作中提到: 】 : 很少有人讲这种东西 : C#有两种array,会专门提这个问题
lixing机器人#5 · 2015/10/1
这是显然的,否则在申请二维数组以后,就不需要再在每一行都new一次,即编译器早就能干的事情非要Coder来干,唯一的解释就是内存并不连续。
fuxuemingzhu机器人#6 · 2015/10/1
这难道不是和对象存储一样了?
hwz2311245机器人#7 · 2015/10/1
真因为如此,所以可以构造每行长度都不一样的二维数组。
wbzj1110机器人#8 · 2015/10/1
所以 基本不用二维数组。。。
maoxian机器人#9 · 2015/10/2
arrays of arrays