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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 逍遥呆 中级黑马   /  2014-9-16 17:07  /  1569 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int[] a1 = new int[4];
Object[] aObj1 = a1;
为什么不成立,老师只是说基本类型一维数组不能转换成Object数组,可是原因没说,哪位能帮我解答一下疑问?

14 个回复

倒序浏览
能不能有人帮我解释下!!拜托
回复 使用道具 举报
Object[] obj=int[] a1;这样就相当于 Object=int;
把不是对象的基础数据类型int赋值给Object当然出错了!
回复 使用道具 举报
int是基本的数据类型,数组中存放是基本类型的数字,int[]数组是对象,Object[]是对象的数组,对象的引用不能赋予对象数组的引用,如果int[][] a2 = new int[][],这样就可以aObj1 = a2了
回复 使用道具 举报
a1 是一个对象, 而你现在却把它为对象数组这哪行啊!!!
回复 使用道具 举报
int[] a1 = new int[4];  a1是一个int类型的数组,里面存储的是基本数据类型int型
Object[] aObj1 = a1; aObj1是一个Object类型的数组,里面存的是Object的对象.
数组,String 都可以做为Object的对象,但是基本数据类型是不可以作为Object的对象的,所以会发生错误
回复 使用道具 举报
郑飞 高级黑马 2014-9-16 23:18:38
7#
你把a1拆开 里面是4个int整数 你要把这4个整数放在Object类型的数组中当然是做不到的
回复 使用道具 举报
笑脸迷人 发表于 2014-9-16 21:03
Object[] obj=int[] a1;这样就相当于 Object=int;
把不是对象的基础数据类型int赋值给Object当然出错了!
...

Object类不是所有类的基类吗?为什么不能将int型赋给Object类啊
回复 使用道具 举报
Fightin黑马 发表于 2014-9-16 22:08
int[] a1 = new int[4];  a1是一个int类型的数组,里面存储的是基本数据类型int型
Object[] aObj1 = a1; aOb ...

“数组,String 都可以做为Object的对象,但是基本数据类型是不可以作为Object的对象的”
我就是这里不太明白,为什么不能?
回复 使用道具 举报
Object数据类型是引用数据类型,int的基本数据类型,两者不能直接划=号;
但是Object obj=1;这是可以的,因为1.5后出现了自动装箱拆箱;
Object[]=int[];它会先判断Object和int是否是同一个体系的,这样就出错了
回复 使用道具 举报
顶一个。
回复 使用道具 举报
泛形要求能包容的是对象类型,而基本类型在java里不属于对象。但是基本类型都有其包装类型,也就是对象类型: int->Integer long->Long
回复 使用道具 举报
int[] a1=new int[4] //表示a1是int类型的数组,该数组存储的都是int数据类型的
回复 使用道具 举报
int[] a1=new int[4]//里面是int类型的数组,里面存储的都是int类型。Object[] obj1是object类型的数组,里面存储的都是object对象,而基本数据类型啊
回复 使用道具 举报
因为基本类型一维数组的父类名称都是Object,a1是一个int类型的数组,里面装的都是int,所以Object aobj1=a1;成立的。但是Object[] aobj1表示的是一个Object数组里面装的都是Object对象,显然基本数据类型int不是Object对象,但是,数组,String是Object对象。所以如果 String[] str=new String[3],则Object aobj1=str;是成立的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马