Java中的二维数组是怎么分配内存的?

人工智能-张晨光
优质创作者: 前端开发技术领域
领域专家: 后端开发技术领域
2008-03-03 07:45:36
rt
...全文
528 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yexinwinner 2008-06-23
  • 打赏
  • 举报
回复
java 中没有一维数组,但可以用一维数组实现二维或者是多维数组。
一维数组在内存中是利用一段连续的空间存放,都是相对于起始位置的偏移量。
如果起始位置 为0 数据类型为 int 那么第一个单元就要占用连续的4个字节 那个第二个元素就从5开始存储
有如下公式 x内存中的起始位置 L 数据类型的长度(字节) i 为数组下标 有如下关系 x+(i*L) = 内存中的位置
一般二维数组在内存的存储形式都转化为一维数组的存储形式,分别有二种方式, 一种是以行优先存储,另一种是以
行优先存储。 那么如何确定二维数组任意下标元素在内存中的位置呢,例如有一个 int 型的二维数组
以行优先存储的位置可依如下公式计算 x + [(i*R)+j]*L
以列优先存储的位置可依如下公式计算 x + [(j*C)+c]*L
注: x为内存起始位置, i j 为数组下标如 list[i,j] R 为一行当中元素的个数 C为一列当中元素的个数

注:以行优先存储 是把二维数组按行一行接着一行的形式取出连续存入一块连续的内存空间的形式。
以列优先存储 是把二维数组按列一列接着一列的形式取出连续存入一块连续的内存空间的形式。

  • 打赏
  • 举报
回复
嗯,这个在《Java核心技术》中提到过。
qijinxiong 2008-03-04
  • 打赏
  • 举报
回复
ddd
hmsuccess 2008-03-03
  • 打赏
  • 举报
回复
其实java中没有多维数组,只有一维数组,多维数组被解释为数组的数组
wenzheng38 2008-03-03
  • 打赏
  • 举报
回复
二维数组可以看成是一个关于一维的一维数组 a[][]={a[],a[],a[].......};a[]={a[][],a[][],......};
一维数组的内存地址分配是连续分配的,由此可以推出二维数组的内存地址分配情况

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧