黑马程序员技术交流社区

标题: 数组赋值 [打印本页]

作者: whocases    时间: 2012-6-1 11:38
标题: 数组赋值
看张老师的视频,在高新技术视频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;
作者: --☆伟☆--    时间: 2012-6-1 11:53
在张老师加强版数组反射中提到:
基本类型的一维数组可以被当做Object类型使用,不能当做Object[]类型使用;
非基本类型的一维数组,既可以当做Object类型使用,又可以当做Object[]类型使用;

作者: 黑马11期李项京    时间: 2012-6-1 12:08
int [] a1 = new int[3];
Object[] obj3 = a1;  //编译错误
a1表示的是一个一维int数组,在java中int[]可以作为一个对象类型,但是int不能作为一个对象类型。
那么问题就来了:Object[] obj3 = a1; 将一个int数组,赋给一个Object数组,也将int数组中的每个int元素,赋给Object数组中Object元素,显然是不行的,因为int元素不能赋给一个对象元素
作者: 凡延海    时间: 2012-6-1 13:57
数组是一个比较特别的类型它既不是基本数据类型也不是一般的引用类型,一维数组int [] a1 = new int[3]; 如果进行这样的操作的话Object[] obj3 = a1那就是意味着a1表示的数值中的内容呢是对象引用才可以,而a1数组的内容是int基本数据类型元素,不是引用类型,因而进行Object[] obj3 = a1操作的时候编译会报错。




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