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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© whocases 黑马帝   /  2012-6-1 11:38  /  1875 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看张老师的视频,在高新技术视频24讲中,有个没看懂的地方
有如下定义,其中Object[] obj3 = a1;是编译错误的,请哪位大侠帮忙解释一下
int [] a1 = new int[3];
int [] a2 = new int[4];
int[][] a3 = new int[2][3];
String [] a4 = new int[3];

Object obj1 = a1;
Object obj2 = a4;
Object[] obj3 = a1;  //编译错误
Object [] obj4 = a3;
Object [] obj5 = a4;

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
在张老师加强版数组反射中提到:
基本类型的一维数组可以被当做Object类型使用,不能当做Object[]类型使用;
非基本类型的一维数组,既可以当做Object类型使用,又可以当做Object[]类型使用;

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
int [] a1 = new int[3];
Object[] obj3 = a1;  //编译错误
a1表示的是一个一维int数组,在java中int[]可以作为一个对象类型,但是int不能作为一个对象类型。
那么问题就来了:Object[] obj3 = a1; 将一个int数组,赋给一个Object数组,也将int数组中的每个int元素,赋给Object数组中Object元素,显然是不行的,因为int元素不能赋给一个对象元素

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
数组是一个比较特别的类型它既不是基本数据类型也不是一般的引用类型,一维数组int [] a1 = new int[3]; 如果进行这样的操作的话Object[] obj3 = a1那就是意味着a1表示的数值中的内容呢是对象引用才可以,而a1数组的内容是int基本数据类型元素,不是引用类型,因而进行Object[] obj3 = a1操作的时候编译会报错。

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

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