黑马程序员技术交流社区

标题: 关于object对象与数组问题! 求解 [打印本页]

作者: jinhu358    时间: 2013-5-24 21:14
标题: 关于object对象与数组问题! 求解
本帖最后由 jinhu358 于 2013-5-25 08:12 编辑

Object a = new int[]{1,2};
Object b = new String[]{"a","b"};
Object[] c = new int[]{1,2};//编译报错
Object[] d = new String[]{"a","b"};

为什么String数组付给Object对象和Object[]  都可以呢?
作者: breeze    时间: 2013-5-24 21:46
数组是一个对象, 包括基本数据类型的数组也是对象, String[]赋给Object是将数组当成一个对象了, 相当于Object是一个数组对象, 赋给Object[]相当于是父类型引用指向子类对象, 因为String是Object的子类, 是将里面的元素传给了Object[], for(int i = 0; i < stringArr.length; i++) {object[i] = stringArr[i]}
作者: 年轻的棒棒    时间: 2013-5-24 22:09
int是一个基本数据类型,int[]才是一个引用数据类型,Object a = new int[]{1,2};这是建立一个数组对象然后赋给Object是可以的,Object[] c = new int[]{1,2};这个时候你是把1和2当做元素来进行对对象数组存储的,就错了。String是一个引用数据类型,是Object的子类,String[]{"a","b"},这里是把String类型的数据当做元素存储是可以的。
Object[] c = new iInteger[]{1,2};
这才是可以通过编译的,Integer和int是不同的,这个你可以仔细比较一下他们的区别。
作者: 821728010    时间: 2013-5-24 22:52
String数组名是一个对象引用变量,赋给Object类型的参数时自动向上转型,不会影响String对象的使用,多态嘛!
作者: 胡浩    时间: 2013-5-24 23:19
通过你的问题,我想到一个问题,那就是java难道并不是完全面向对象的?基本数据类型并不以对象的方式存在,否则的话,object是所有类的基类,任何对象都可以装在一个object对象数组中。
作者: xiewen    时间: 2013-5-25 00:16
数组是引用数据类型,java中所有类的父类是Object,所以可以把所有对象赋给Object类的引用,这就是一种多态形式。
             黑马云青年为您解答
作者: 杨彬    时间: 2013-5-25 00:51
Object[]就是Object数组,属于对象数组
String[]也属于一个对象数组
int[]属于基本类型变量数组
String[]属于引用型变量数组(也就是对象数组)
String比较特殊,它是引用型变量,但拥有一些基本类型变量的特性。




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