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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© §傻、才乖 中级黑马   /  2013-12-9 18:53  /  1496 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int[] arr=new int[3];
Object[] obj=arr;
这样为什么不行,请高手 帮忙详细解释下
谢谢

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

9 个回复

倒序浏览
Object  不是数据类型!! 数组的定义看看就明白了了!
回复 使用道具 举报
一个是基本数据类型数组一个是对象型数组 把int 改为Integer就行了
回复 使用道具 举报
把int换成Integer就可以了
应该是数据类型不一样吧,一个是装对象,一个是装基本数据类型。
也不知道解释得对不对,抛砖引玉吧,希望有牛人回答。
回复 使用道具 举报
有趣的问题
回复 使用道具 举报
int[] arr,这样定义以后,因为int[] 的类型实际上为Object,而不是Object[],
所以Object[] obj=arr,这样是将一个 Object 类型赋给Object[],肯定不行
回复 使用道具 举报
楼主您好!
如果代码改成这样,就可以编译通过。
  1. int[] arr = new int[3];
  2.                 Object obj = arr;
复制代码

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

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
翼展哈哈 发表于 2013-12-9 19:44
楼主您好!
如果代码改成这样,就可以编译通过。

谢谢,先前是没想这点
回复 使用道具 举报
§傻、才乖 发表于 2013-12-10 00:41
谢谢,先前是没想这点

不客气……
回复 使用道具 举报
末末 中级黑马 2013-12-10 10:39:29
10#
因为arr是一个一维数组,里面的数据类型是,int的,不是对象,而你的Object[] obj=arr;这里的意思是说arr数据里的元素类型是Object类型的,但事实不是,所以会报错,如果你用一个二维int型 的数组就不会报错了
int[][] arr=new int[3][4];
Object[] obj=arr;

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马