Object [] ob3 = a1;
ob3是Object类型的一维数组,而a1是int类型的数组,Object类型是所有类的父类,把一个基本类型的数组对象赋给一个一维父类数组对象肯定是错误,它的意思是将int类型的一维数组的内容赋给Object类型数组,这肯定是不可以的,因为Object数组只能存储对象,类型不匹配。
那为什么一个二维数组就可以呢?
先看一张图:
javascript:;
http://bbs.itheima.com/forum.php?mod=attachment&aid=MzkzODZ8YjFiZTU3YWQyNTg4NGY4YTk0ZDcwZTliZDgwMjE5NjZ8MTczNDk1MDMyMQ%3D%3D&request=yes&_f=.png
二维数组就相当于是一个一维数组对应多个一维数组的形式,当把一个一维数组赋给Object对象数组时,类型不匹配会报错 ,先看这个二维数组
int [][] a3 = new int [2][3];
它在内存中可以写成:
a3[0]= new int[]{0,0,0};
a3[1]=new int[]{0,0,0};
当把这个二维数组对象赋给Object数组对象时,它是a3[0]和a3[1]两个对象交给Object数组对象进行存储,能存储对象本来就是数组的一大特性。
Object obj5 = a4;
这个更简单a4是一个二维数组对象,Object是所有类的父类,这就是多态,可以把子类对象赋给父类应用。 |
|