数组占用内存空间问题,恳请高手指教!

hoho8484 2010-03-12 03:16:30
数组int a[][] = new int[2][10]
数组int b[][] = new int[10][2]
问a和b哪一个占用内存空间更大,求详解,谢谢!
...全文
304 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hoho8484 2010-03-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 dazzlingwinter 的回复:]
Java code

数组int a[][] = new int[2][10]
产生一个二维数组引用和两个一维数组引用,创建一个二维数组对象a和两个一位数组对象a[0],a[1]共创建3个对象,并初始化了20个int型数据
数组int b[][] = new int[10][2]
产生一个二维数组引用和十个一位数组引用,创建一个二维数组对象b和10个一位数组对象b[0]~b[9]共创建1……
[/Quote]
还是这位大侠的讲解比较深刻,非常感谢!
Dazzlingwinter 2010-03-12
  • 打赏
  • 举报
回复

数组int a[][] = new int[2][10]
产生一个二维数组引用和两个一维数组引用,创建一个二维数组对象a和两个一位数组对象a[0],a[1]共创建3个对象,并初始化了20个int型数据
数组int b[][] = new int[10][2]
产生一个二维数组引用和十个一位数组引用,创建一个二维数组对象b和10个一位数组对象b[0]~b[9]共创建11个对象,并初始化了20个int型数据
a开销<b开销
hoho8484 2010-03-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 chenliuyang 的回复:]
第二个开的内存空间要大。
第一个数组开的空间就是 先开a[0],a[1],在开a[0][10],a[1][10]加起来有22
第二个数组开的空间是:a[0],a[1]....a[9],在开a[0][0],a[0][1]....a[9][0],a[9][1]加起来有30.

好比用两个桶去装20个东西和用10个桶去装20个东西.
在存储这方面都只能装同样多的东西,但是对于内存消耗就不同啦。……
[/Quote]
你这个比喻很恰当,但是是不是应该是一维数组的分配问题,就是在创建二维数组的时候是怎样去分配一维数组的,可不可以在这方面详细点!谢谢
chenliuyang 2010-03-12
  • 打赏
  • 举报
回复
如果你觉得我是对得,就请给分
chenliuyang 2010-03-12
  • 打赏
  • 举报
回复
第二个开的内存空间要大。
第一个数组开的空间就是 先开a[0],a[1],在开a[0][10],a[1][10]加起来有22
第二个数组开的空间是:a[0],a[1]....a[9],在开a[0][0],a[0][1]....a[9][0],a[9][1]加起来有30.

好比用两个桶去装20个东西和用10个桶去装20个东西.
在存储这方面都只能装同样多的东西,但是对于内存消耗就不同啦。见意你用第一种方式
hoho8484 2010-03-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 nihuajie05 的回复:]
Java code

int a[][] = new int[2][10]
int b[][] = new int[10][2]


的区别是什么,请楼主告诉我好么
[/Quote]
这个是曾经一个面试官问我的问题,当时我也一脸茫然.
据说是内存的分配不一样,我也没搞明白,所以想请高手解答!
nihuajie05 2010-03-12
  • 打赏
  • 举报
回复

int a[][] = new int[2][10]
int b[][] = new int[10][2]

的区别是什么,请楼主告诉我好么

62,620

社区成员

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

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