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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wuwenwen3779 中级黑马   /  2015-6-26 22:08  /  1330 人查看  /  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-26 23:57
System.out.println(arr);打印的是这个二维数组的地址值,而System.out.println(arr[0]);打印的是二维数组中 ...

谢过了,解释的很详细明白,赞一个
回复 使用道具 举报
符慢慢 发表于 2015-6-30 23:59
不一样的。arr是箱子的地址值   而arr[0] 是箱子里面盒子的地址值

你家头像好可爱呢,你知道我是谁不
回复 使用道具 举报
林大涛 发表于 2015-7-1 10:34
如果array是一维数组,那么 sop(array)跟sop(array[0])是一样的

一维数组,array【0】不是应该直接输出数组第一个元素了吗
回复 使用道具 举报
array是在数组的地址,在栈内存中。array[0]的地址是array里面的元素的地址,在堆内存中。是array地址所指向的地址。

19.jpg (70.12 KB, 下载次数: 15)

19.jpg
回复 使用道具 举报
arr代表整个二维数组的地址,arr[0]代表这个二维数组中第一个一维数组的地址。所以结果不一样。
回复 使用道具 举报
arr是由四个一维数组构成的,arr指向这个二维数组地址,arr[0]指向这个二维数组的第一个元素(第一个一维数组)的地址。
回复 使用道具 举报
围观围观围观
回复 使用道具 举报
如果array是一维数组,那么 sop(array)跟sop(array[0])是一样的
回复 使用道具 举报
第一个是二维数组的地址,第二个是这个二维数组第一个元素的地址,一楼那个比喻很详细。
回复 使用道具 举报
不一样的,System.out.println(arr);这个打印输出的应该是二维数组的值
  System.out.println(arr[0]);这个打印输出的应该二维数组中第一个一维数组的值
回复 使用道具 举报
一个是地址值。后面的是对应0索引的值
回复 使用道具 举报
不一样的。arr是箱子的地址值   而arr[0] 是箱子里面盒子的地址值
回复 使用道具 举报
鲤鱼仙 发表于 2015-6-27 21:32
arr  代表的是这个二维数组的 地址值
而arr[0]代表的是这个二维数组里面第一个一位数组的地址值
求大神  ...

根据别人的回帖,目前来看是这样的
回复 使用道具 举报
zlpiano 发表于 2015-6-27 22:24
arr是二维数组引用,arr[0]是一维数组引用,都是地址值,但是不相同

你说的对!!!!!!
回复 使用道具 举报

是吧,不太好搞哦
回复 使用道具 举报
小龙编程世界 发表于 2015-6-27 10:19
arr是地址值啊,相当于0X0011那种,arr[0]就是打印数组第一个元素值

第一句话是对的,arr【0】是一维数组首地址
回复 使用道具 举报
arr是二维数组引用,arr[0]是一维数组引用,都是地址值,但是不相同
回复 使用道具 举报
arr  代表的是这个二维数组的 地址值
而arr[0]代表的是这个二维数组里面第一个一位数组的地址值
求大神 看看是我说的这样吗
回复 使用道具 举报
Diors 发表于 2015-6-27 10:23
二楼说的对,估计你大学上课时打瞌睡了

我真的记得大学的时候跟这说的不一样:'(,我好像真的错了
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马