黑马程序员技术交流社区

标题: 高新部分数组与反射的问题 [打印本页]

作者: 逍遥呆    时间: 2014-9-16 17:07
标题: 高新部分数组与反射的问题
int[] a1 = new int[4];
Object[] aObj1 = a1;
为什么不成立,老师只是说基本类型一维数组不能转换成Object数组,可是原因没说,哪位能帮我解答一下疑问?
作者: 逍遥呆    时间: 2014-9-16 19:58
能不能有人帮我解释下!!拜托
作者: 笑脸迷人    时间: 2014-9-16 21:03
Object[] obj=int[] a1;这样就相当于 Object=int;
把不是对象的基础数据类型int赋值给Object当然出错了!

作者: nyk    时间: 2014-9-16 21:52
int是基本的数据类型,数组中存放是基本类型的数字,int[]数组是对象,Object[]是对象的数组,对象的引用不能赋予对象数组的引用,如果int[][] a2 = new int[][],这样就可以aObj1 = a2了
作者: nagi    时间: 2014-9-16 21:59
a1 是一个对象, 而你现在却把它为对象数组这哪行啊!!!
作者: Fightin黑马    时间: 2014-9-16 22:08
int[] a1 = new int[4];  a1是一个int类型的数组,里面存储的是基本数据类型int型
Object[] aObj1 = a1; aObj1是一个Object类型的数组,里面存的是Object的对象.
数组,String 都可以做为Object的对象,但是基本数据类型是不可以作为Object的对象的,所以会发生错误
作者: 郑飞    时间: 2014-9-16 23:18
你把a1拆开 里面是4个int整数 你要把这4个整数放在Object类型的数组中当然是做不到的
作者: 逍遥呆    时间: 2014-9-17 00:36
笑脸迷人 发表于 2014-9-16 21:03
Object[] obj=int[] a1;这样就相当于 Object=int;
把不是对象的基础数据类型int赋值给Object当然出错了!
...

Object类不是所有类的基类吗?为什么不能将int型赋给Object类啊
作者: 逍遥呆    时间: 2014-9-17 00:39
Fightin黑马 发表于 2014-9-16 22:08
int[] a1 = new int[4];  a1是一个int类型的数组,里面存储的是基本数据类型int型
Object[] aObj1 = a1; aOb ...

“数组,String 都可以做为Object的对象,但是基本数据类型是不可以作为Object的对象的”
我就是这里不太明白,为什么不能?
作者: 笑脸迷人    时间: 2014-9-17 08:20
Object数据类型是引用数据类型,int的基本数据类型,两者不能直接划=号;
但是Object obj=1;这是可以的,因为1.5后出现了自动装箱拆箱;
Object[]=int[];它会先判断Object和int是否是同一个体系的,这样就出错了
作者: 备战    时间: 2014-9-17 08:50
顶一个。
作者: mengzi987    时间: 2014-9-17 09:18
泛形要求能包容的是对象类型,而基本类型在java里不属于对象。但是基本类型都有其包装类型,也就是对象类型: int->Integer long->Long
作者: mengzi987    时间: 2014-9-17 09:20
int[] a1=new int[4] //表示a1是int类型的数组,该数组存储的都是int数据类型的
作者: mengzi987    时间: 2014-9-17 09:22
int[] a1=new int[4]//里面是int类型的数组,里面存储的都是int类型。Object[] obj1是object类型的数组,里面存储的都是object对象,而基本数据类型啊
作者: mengzi987    时间: 2014-9-17 09:39
因为基本类型一维数组的父类名称都是Object,a1是一个int类型的数组,里面装的都是int,所以Object aobj1=a1;成立的。但是Object[] aobj1表示的是一个Object数组里面装的都是Object对象,显然基本数据类型int不是Object对象,但是,数组,String是Object对象。所以如果 String[] str=new String[3],则Object aobj1=str;是成立的




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