黑马程序员技术交流社区
标题:
大半夜的突然想到一个数组java的问题
[打印本页]
作者:
毛羚杨
时间:
2014-2-23 23:46
标题:
大半夜的突然想到一个数组java的问题
大半夜的没事突然想到一个问题 以前都没有想通过和解决过
很简单就是有一道题好像是说java中没有多维数组,他们都说java中实际上是连二维数组都没有的,说是其实二维或多维数组是通过一维数组来组成的,这个是真的呢 应该怎样解释和证明呢?
作者:
jkenny
时间:
2014-2-24 00:31
额可以怎么说没错。
你先想一下如果你定义一个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的。
作者:
ghhryr
时间:
2014-2-24 03:50
楼上的解释很厉害啊,学习了
作者:
毛羚杨
时间:
2014-2-24 10:12
jkenny 发表于 2014-2-24 00:31
额可以怎么说没错。
你先想一下如果你定义一个1维数组只有1个元素,那然后给这个元素赋值,问:你赋的值存 ...
领教高手的解释…………
作者:
qqwwdr
时间:
2014-2-24 11:55
jkenny 发表于 2014-2-24 00:31
额可以怎么说没错。
你先想一下如果你定义一个1维数组只有1个元素,那然后给这个元素赋值,问:你赋的值存 ...
这样的解释可以用来做教材了 ,
作者:
放课后小朋友
时间:
2014-2-24 12:51
平常定义数组的方式:
1、一维数组:int[] arr
2、二维数组:int[][] arr
那么下面这个数组的定义形式就说明了问题:
int[] x,y[]
上面数组的意思是定义了两个数组,一个一维,一个二维,分别是:
int[] x
int[] y[]
总结:所以明了了,java所谓的二维数组就是在一维数组中添加了另一个数组,说到底还是一维数组,并且还可以通过int[][] arr=new int[3][2]中arr.length()得到的数值是3,而不是6,说明是一维数组中添加了另一个一维数组,而成为人们所说的二维数组。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2