A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 毛羚杨 中级黑马   /  2014-2-23 23:46  /  995 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

大半夜的没事突然想到一个问题 以前都没有想通过和解决过

很简单就是有一道题好像是说java中没有多维数组,他们都说java中实际上是连二维数组都没有的,说是其实二维或多维数组是通过一维数组来组成的,这个是真的呢 应该怎样解释和证明呢?

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

5 个回复

倒序浏览
额可以怎么说没错。
你先想一下如果你定义一个1维数组只有1个元素,那然后给这个元素赋值,问:你赋的值存在那里?
如:int x[]=new int[]{5};
答案是:x在栈内存中,值5在堆中。(这样的话也就是说x里面存的是数值5的地址值,x是引用型数据类型)
那么你定义2个这样1维的数组,然后把其中一个数组直接赋值给另外一个数组内的元素中(是元素中不是引用变量中)
如:
int x[]=new int[2];  
int y[]=new int[2];
x[0]=y;  //看清楚这里,现在x数组中的第一个元素里的值是y数组的值(不是y数组中元素的值),是y的值是指向到y数组中的地址,是地址值。
那么现在不就是x[0]这个元素指向了另外一个数组么?同样也可以让x[1]在指向另外的数组。
这样的话不就用了2个1维数组组合成了一个2维数组了吗?
Java就是这样实现多维数组的。所以它的多维数组元素个数是可以n*m的。而其他语言多维数组元素个数是n*n的。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报 2 0
楼上的解释很厉害啊,学习了
回复 使用道具 举报
jkenny 发表于 2014-2-24 00:31
额可以怎么说没错。
你先想一下如果你定义一个1维数组只有1个元素,那然后给这个元素赋值,问:你赋的值存 ...

领教高手的解释…………
回复 使用道具 举报
jkenny 发表于 2014-2-24 00:31
额可以怎么说没错。
你先想一下如果你定义一个1维数组只有1个元素,那然后给这个元素赋值,问:你赋的值存 ...

这样的解释可以用来做教材了 ,
回复 使用道具 举报
平常定义数组的方式:
1、一维数组:int[] arr
2、二维数组:int[][] arr

那么下面这个数组的定义形式就说明了问题:
int[] x,y[]
上面数组的意思是定义了两个数组,一个一维,一个二维,分别是:
int[] x
int[] y[]
总结:所以明了了,java所谓的二维数组就是在一维数组中添加了另一个数组,说到底还是一维数组,并且还可以通过int[][] arr=new int[3][2]中arr.length()得到的数值是3,而不是6,说明是一维数组中添加了另一个一维数组,而成为人们所说的二维数组。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马