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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 焦志鹏 中级黑马   /  2012-10-11 07:58  /  1695 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

(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;

这样理解有没有什么问题

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 技术+100

查看全部评分

4 个回复

倒序浏览
我就是这样理解的,不晓得别人有什么高见
回复 使用道具 举报
应该是的,可以全部都分两步看,第一个确定了一个数组后,又给此数组赋值了一个确定的数组,
像是:int x=1;
第二个,确定一个数组,只知道里面的元素是数组,但不知道具体是几个元素的数组
像是:int x;  并没有赋值,只确定了类型。。。

个人理解。。期待高手确认。

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 技术+200

查看全部评分

回复 使用道具 举报
你那么理解能行,还有一种方法就是你把声明的数组想像成一张表格,就好比你的
(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的表格。
因为理解多维数组最好的方法就是把它想象成一张表格。希望对你有帮助。
回复 使用道具 举报
二维数组就像一个Excel的那样的表格
int[][] arr = new int [3][4]//可以这样理解new后面[行][列],也就是说第一个是3行4列
  (2)int[][] arr =new int [3][]
       s.o.p (arr[0]);   //第二个和LS的解释一样
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马