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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wuwenwen3779 中级黑马   /  2015-6-26 22:08  /  1337 人查看  /  26 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Array1
{
public static void main(String[] args)
{
  int[][] arr={{1,2},{3},{4},{5}};
  System.out.println(arr);
  System.out.println(arr[0]);
}
}
问一下这段代码,为什么输出的两个地址不一样,明明记得大学上课的时候学过它是个一样的呀

评分

参与人数 3技术分 +1 黑马币 +16 收起 理由
Dyna + 10 淡定
modric14 + 6 果然菜!但回想当年,自己也曾困惑这个,.
lwj123 + 1

查看全部评分

26 个回复

倒序浏览
本帖最后由 小骆驼 于 2015-6-27 00:17 编辑

System.out.println(arr);打印的是这个二维数组的地址值,而System.out.println(arr[0]);打印的是二维数组中的第一个一维数组的地址值,所以打印的不一样打个比方,把一栋办公楼看成 一个二维数组,而不同楼层就是相应的二维数组里的一维数组,每个楼层的房间号就是一维数组的角标.
你要是找这栋楼,也就是找这个楼的地址,比如是中心大街009号,但是这栋楼二层的地址是办公楼 二层.你看两个地址值不一样吧.数组也是这个道理.
好像毕老师视频里有讲这个,举例差不多,你可以看看
回复 使用道具 举报 2 0
arr是地址值啊,相当于0X0011那种,arr[0]就是打印数组第一个元素值
回复 使用道具 举报 0 1
二楼说的对,估计你大学上课时打瞌睡了
回复 使用道具 举报
一个是二维数组的地址值,一个是二维数组中一维数组的地址值,就像二楼同学说的一样,一个只有楼层号,一个是要楼层号中的房间号
回复 使用道具 举报
2楼解释的很明白。
回复 使用道具 举报
小骆驼 发表于 2015-6-26 23:57
System.out.println(arr);打印的是这个二维数组的地址值,而System.out.println(arr[0]);打印的是二维数组中 ...

正解,赞一个
回复 使用道具 举报
改变 中级黑马 2015-6-27 14:31:47
8#
学习了!
回复 使用道具 举报
Diors 发表于 2015-6-27 10:23
二楼说的对,估计你大学上课时打瞌睡了

我真的记得大学的时候跟这说的不一样:'(,我好像真的错了
回复 使用道具 举报
arr  代表的是这个二维数组的 地址值
而arr[0]代表的是这个二维数组里面第一个一位数组的地址值
求大神 看看是我说的这样吗
回复 使用道具 举报
arr是二维数组引用,arr[0]是一维数组引用,都是地址值,但是不相同
回复 使用道具 举报
小龙编程世界 发表于 2015-6-27 10:19
arr是地址值啊,相当于0X0011那种,arr[0]就是打印数组第一个元素值

第一句话是对的,arr【0】是一维数组首地址
回复 使用道具 举报

是吧,不太好搞哦
回复 使用道具 举报
zlpiano 发表于 2015-6-27 22:24
arr是二维数组引用,arr[0]是一维数组引用,都是地址值,但是不相同

你说的对!!!!!!
回复 使用道具 举报
鲤鱼仙 发表于 2015-6-27 21:32
arr  代表的是这个二维数组的 地址值
而arr[0]代表的是这个二维数组里面第一个一位数组的地址值
求大神  ...

根据别人的回帖,目前来看是这样的
回复 使用道具 举报
不一样的。arr是箱子的地址值   而arr[0] 是箱子里面盒子的地址值
回复 使用道具 举报
一个是地址值。后面的是对应0索引的值
回复 使用道具 举报
不一样的,System.out.println(arr);这个打印输出的应该是二维数组的值
  System.out.println(arr[0]);这个打印输出的应该二维数组中第一个一维数组的值
回复 使用道具 举报
第一个是二维数组的地址,第二个是这个二维数组第一个元素的地址,一楼那个比喻很详细。
回复 使用道具 举报
如果array是一维数组,那么 sop(array)跟sop(array[0])是一样的
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马