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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 梅雄新 于 2012-2-4 14:07 编辑

求教高手指点遇到的问题

int [] a1 = new int[]{1,2,3};
int [] a2 = new int[4];
int[] [] a3 = new int[2][3];
String[] a4 = new String[3];

Object aobj1 = a1;
Object aobj2 = a4;
Object[] aobj3 = a1;  
Object[] aobj4 = a3;
Object[] aobj5 = a4;

Object[] aobj3 = a1;  为什么这个编译出错 a1数组中的确是基本数据类型,这里为什么不能自动装箱成对应的Integer对象呢
而Integer[] m ={1,2,3,4};又可以呢,自动装箱在什么情况下是成立的呢
感觉有点理解不清晰,请师兄指教,谢谢

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 张伟~ 于 2012-2-3 16:35 编辑

基本类型不属于Object,Object[] aobj3 = a1; 左边数组里装的是Object,而右边数组装的是int类型,所以Object[] aobj3 = a1;是错误的。
至于自动装箱包装的是基本类型,还不能包装数组吧

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
本帖最后由 刘基军 于 2012-2-3 16:29 编辑

恩,数组不行的
下面那句,实际上将int值分别装箱进行存储的

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
编译时提示:
不兼容的类型
找到: int[]
需要: java.lang.Object[]
                Object[] aobj3 = a1;  
                                 ^
就是左边是Object[]类型,右边是int[],不行。

Integer[] aobj3 = a1; --- 也不行,int[] 无法转成 Integer[] 。

Integer[] m ={1,2,3,4};
Object[] aobj3 = m;    ---- 这可以,是因为Integer 继承于Object,是其子类,根本不涉及到装箱、拆箱,int不能,是因为它不是一个正式的类。JDK5 之后,单个int 可自动装箱,但int[] 仍无法转成 Integer[]。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

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