黑马程序员技术交流社区
标题:
关于二维数组的一点疑问
[打印本页]
作者:
焦志鹏
时间:
2012-10-11 07:58
标题:
关于二维数组的一点疑问
(1)int[][] arr = new int [3][4]
s.o.p (arr[0]); //此时输出的是一维数组的地址
(2)int[][] arr =new int [3][]
s.o.p (arr[0]); //此时输出的是null
数组是引用数据类型,第二种情况中,3个一维数组都默认初始化值为null
疑问:可不可以这样理解:
第一种情况确定了每个一维数组的长度,所以全都初始化为0,故arr[0]指向了一个初始化值为{0,0,0,0}的数组,故显示的是它的地址;
第二种情况不确定每个一维数组的长度,没办法指向一个确定的数组的地址,故初始化值为null;
这样理解有没有什么问题
作者:
qhasilver
时间:
2012-10-11 08:38
我就是这样理解的,不晓得别人有什么高见
作者:
李兆宁
时间:
2012-10-11 08:43
应该是的,可以全部都分两步看,第一个确定了一个数组后,又给此数组赋值了一个确定的数组,
像是:int x=1;
第二个,确定一个数组,只知道里面的元素是数组,但不知道具体是几个元素的数组
像是:int x; 并没有赋值,只确定了类型。。。
个人理解。。期待高手确认。
作者:
胡高德
时间:
2012-10-11 09:15
你那么理解能行,还有一种方法就是你把声明的数组想像成一张表格,就好比你的
(1)int[][] arr = new int [3][4]
s.o.p (arr[0]); //此时输出的是一维数组的地址
(2)int[][] arr =new int [3][]
s.o.p (arr[0]); //此时输出的是null
第一个就可以理解成为做了一张横三竖四的表格;
第二个可以想像成一个横三,竖为NULL的表格。
因为理解多维数组最好的方法就是把它想象成一张表格。希望对你有帮助。
作者:
朱金林
时间:
2012-10-11 10:36
二维数组就像一个Excel的那样的表格
int[][] arr = new int [3][4]//可以这样理解new后面[行][列],也就是说第一个是3行4列
(2)int[][] arr =new int [3][]
s.o.p (arr[0]); //第二个和LS的解释一样
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2