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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

为什么可以在创建Object类数组的时候可以直接往数组里添加基本数据类型的元素?
如:
Object[] obj=new Object[]{1,2,3};     //问题:既然基本数据类型不能向上强转为Object类,那这个数组建立的时候是这么创建的?
却不可以把一个基本数据类型的数组转换为Object数组呢?
如下:
int[] arr=new int[]{1,2,3};
Object[] obj=arr;  //本句代码出错,无法转换。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

9 个回复

倒序浏览
arr 数组是一个对象, 不能转为Object[] , 可以改为Object ob=arr;
回复 使用道具 举报
为什么
arr 数组是一个对象?
回复 使用道具 举报
我觉得是,你new Object[1,2,3] 的时候,里面的基本数据类型有一个自动装箱的动作,就new Integer(1),把里面的基本数据类型变为对象,所有可以存到Object里面去,

当你把一个基本数据类型的数组 赋给Object数组的时候,没有了装箱动作,所以会出错。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 王琪 于 2013-12-23 00:56 编辑

new int[]{1,2,3}确实是对象  但是我觉得int[] arr=new int[]{1,2,3};以后arr就不是对象了吧>.<?嗯。。装箱..这个解释.我好像明白点
但是   基本数据类型必须要显式地强制转换才可以转换为Object类 如果这句话对的话   那Object[] obj=(Object)arr;为什么;也不对?

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
王琪 发表于 2013-12-23 00:27
为什么
arr 数组是一个对象?

数组都是new出来的啊,所以他本身就是对象,
回复 使用道具 举报
java中所有的类都是继承自Object类的。所以Object类的引用都可以指向任何类的对象。
在JDK1.6中,实现了基本数据的自动装箱和拆箱功能,在这儿的具体实现就是:
将int型的数组1,2,3封装成了Integer类型的对象。封装成对象了也就是继承自Object类的对象了。
所以可以用Object类对象的引用来指向。


其实数组也是一个对象,数组也是继承自Object类的对象,
所以你的arr是一个对象,当然不能把一个对象的引用传给一个Object对象的数组了。
如果改成Object obj = arr;这样就对了。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报 1 0
smileven 发表于 2013-12-23 02:35
java中所有的类都是继承自Object类的。所以Object类的引用都可以指向任何类的对象。
在JDK1.6中,实现了基 ...

int封装成Integer是不是就是为了简化?使用int这种基类时方便?
回复 使用道具 举报
Object可以放任何对象,可以放short也可以放int,或者是其他的,因为它们都是Object的子类,Short数组可以放null值,而short数组最多也只能放short的最小值与最大值,因为简单类型不是对象,所以没有null,
回复 使用道具 举报
王琪 中级黑马 2013-12-23 12:19:45
10#
本帖最后由 王琪 于 2013-12-23 12:20 编辑

我想到了,
public class Demo2 {
public static void main(String[] args) {
int[] arr=new int[]{1,2,3,3,4,4,4,4};
Object obj= arr;
for(int i=0;i<((int[])obj).length;i++ ){
System.out.print(((int[])obj)+",");
}
}
}
1.如果对obj直接进行打印的话会输出一个地址,也就是说,arr是保存数组对象的地址,
2.Objeect obj=arr;是创建了一个父类型的句柄接受保存arr的地址,
3.但是父类型没有办法实现得子对象的特殊功能,这里指数组的特性例如 .length();
4.所以要想实现数组的性质,就必须要进行向下进行转化
5.所以就有了((int[])obj);的数组对象   和真正的((int][])obj) .length();实现方法
>.<

评分

参与人数 1黑马币 +1 收起 理由
乔兵 + 1 mark

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马