黑马程序员技术交流社区

标题: 有个问题含糊了! [打印本页]

作者: 吴光新    时间: 2013-8-13 05:37
标题: 有个问题含糊了!
  1. //有两个数组:
  2. int[] a1 = new int[4];
  3. int[][] a2 = new int[2][3];

  4. //又有如下定义
  5. //Object[] aObj1 = a1;
  6. Object[] aObj2 = a2;
复制代码
第一个没通过,第二个可以!这是张老师第24节的内容,但他的解释我感觉很模糊,
基本类型的一维数组是不能转换为Object类型数组的,因为在aObj1那里Object这个数组里面装的是int类型的数组,不是Object,所以没通过,
但为什么就说基本类型的二维数组就可以转换为Object类型的数组?


作者: xkfxm    时间: 2013-8-13 08:17
//有两个数组:
int[] a1 = new int[4];
int[][] a2 = new int[2][3];

//又有如下定义
//Object[] aObj1 = a1;
Object[] aObj2 = a2;
楼主你好,是这样的,
因为a1是一个一维int型数组,这个数组中存放的是int性数据,而把它赋给Object型数组(里面装的是对象)就会出错,因为他不会主动将int型数据自动装箱成Integer;
而a2是一个二维数组,就好像一维数组中存放int型一维数组,而里面存放的int型数组是一个对象,所以外面装这些一维数组的二维数组就可以赋值给obj2。
记住一点,什么类型的数组就只能赋值给什么样类型的数组;Object数组中存放对象,给他赋值的数组中也要存放对象。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2