黑马程序员技术交流社区

标题: 关于Object数组的问题 [打印本页]

作者: §傻、才乖    时间: 2013-12-9 18:53
标题: 关于Object数组的问题
int[] arr=new int[3];
Object[] obj=arr;
这样为什么不行,请高手 帮忙详细解释下
谢谢

作者: Faner    时间: 2013-12-9 18:59
Object  不是数据类型!! 数组的定义看看就明白了了!
作者: ixiangfeng    时间: 2013-12-9 19:08
一个是基本数据类型数组一个是对象型数组 把int 改为Integer就行了
作者: 谢文斌    时间: 2013-12-9 19:10
把int换成Integer就可以了
应该是数据类型不一样吧,一个是装对象,一个是装基本数据类型。
也不知道解释得对不对,抛砖引玉吧,希望有牛人回答。
作者: Forevery    时间: 2013-12-9 19:12
有趣的问题
作者: kongling    时间: 2013-12-9 19:20
int[] arr,这样定义以后,因为int[] 的类型实际上为Object,而不是Object[],
所以Object[] obj=arr,这样是将一个 Object 类型赋给Object[],肯定不行
作者: 翼展哈哈    时间: 2013-12-9 19:44
楼主您好!
如果代码改成这样,就可以编译通过。
  1. int[] arr = new int[3];
  2.                 Object obj = arr;
复制代码

您的代码第二行等号的左边声明了一个Object[]型的数组引用变量obj,第二行等号右边是int[]型的数组引用变量arr,int[]型本身可以被理解成Object型,那样楼主第二行代码就可以解释为:把一个Object型的引用变量,赋值给了一个Object[]型的引用变量,这样是不对的,编译时不通过!
希望楼组可以理解,有什么说的不对,欢迎批评指正!

作者: §傻、才乖    时间: 2013-12-10 00:41
翼展哈哈 发表于 2013-12-9 19:44
楼主您好!
如果代码改成这样,就可以编译通过。

谢谢,先前是没想这点
作者: 翼展哈哈    时间: 2013-12-10 08:09
§傻、才乖 发表于 2013-12-10 00:41
谢谢,先前是没想这点

不客气……
作者: 末末    时间: 2013-12-10 10:39
因为arr是一个一维数组,里面的数据类型是,int的,不是对象,而你的Object[] obj=arr;这里的意思是说arr数据里的元素类型是Object类型的,但事实不是,所以会报错,如果你用一个二维int型 的数组就不会报错了
int[][] arr=new int[3][4];
Object[] obj=arr;





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