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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hello world 黑马帝   /  2012-8-5 21:48  /  1979 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Object i=10;
  int[] arr=new int[4];
  int[][] arr2=new int[4][];
  
  String[] arr3=new String[4];
  Object obj1=arr;
  Object obj5=arr2;
  Object obj6=arr3;
Object[] obj2=arr;//这个就不能通过编译
  Object[] obj3=arr2;
  Object[] obj4=arr3;
请高手们指点这个是怎个意思啊?

9 个回复

正序浏览
胡文凡 发表于 2012-8-5 22:42
这个是自动装箱啊。1为Integer

哦对啊,忘记了,谢了
回复 使用道具 举报
这个是自动装箱啊。1为Integer
回复 使用道具 举报
胡文凡 发表于 2012-8-5 22:34
int[] arr=new int[4];
Object[] obj2=arr;//这个就不能通过编译
单独解释这个问题。类似伪语言的就是Obje ...

基本类型不属于Object?那我为什么赋值是Object = 1;可以这个样子赋值呢
回复 使用道具 举报
int[] arr=new int[4];
int[][] arr2=new int[4][];
String[] arr3=new String[4];
Object obj1=arr;
Object obj5=arr2;
Object obj6=arr3;
Object[] obj2=arr;//这个就不能通过编译
Object[] obj3=arr2;
Object[] obj4=arr3;

arr是一维数组int类型,arr2是二维数组int类型。arr3是一维数组String类型,String类型不属于基本数据类型,基本数据类型只有int,long,short,byte,char,double,float,boolean,这些是不能被Objcet类型的变量引用的。只要是数组,无论几维,都可以转换成Object类。
Object obj1=arr;这句话的意思是将obj1变量指向一维int数组arr,数组转换成Object类型,Object obj6=arr3;arr3是String类型的数组,所以可以转换成Object类型,Object[] obj2=arr;如果将一维int类型数组转变成Object类型数组,即要将数组中的每一个int类型的元素转换成Object类型,这是不行的,所以编译不通过。Object[] obj3=arr2;arr2是一个二维数组,相当于是一个一维数组,不过数组中的每一个元素也是个一维数组,将每一个一维数组转换成Object类型,这是没问题的。Object[] obj4=arr3;相当于要将一个String类型转换成Object类型,String不是基本数据类型,可以转换。




回复 使用道具 举报
int[] arr=new int[4];
Object[] obj2=arr;//这个就不能通过编译
单独解释这个问题。类似伪语言的就是Object[] obj= int [] arr;
我们看另一个例子Object[] obj = String[] arr(类似的写,当然代码会报错。只是形象理解)。相当于Object数组定义为String数组。String类属于Object,不会报错。但是基本数据类型int不属于Object。而 int[] arr=new int[4];Object[] obj2=arr;就相当于将在int定义为Object。这样就会报错了。
回复 使用道具 举报
这个得需要转换
回复 使用道具 举报
刘向阳 发表于 2012-8-5 22:11
最好能从上到下 每句都给解释下,还是有点迷糊

其实楼上回答的已经很明白了,楼主可以看看祥叔的高新技术那样更容易理解。
回复 使用道具 举报
王程 发表于 2012-8-5 22:05
int[] arr=new int[4];
Object[] obj2=arr;//这个就不能通过编译
数组arr为int类型的一维数组,只能转换成O ...

最好能从上到下 每句都给解释下,还是有点迷糊
回复 使用道具 举报
int[] arr=new int[4];
Object[] obj2=arr;//这个就不能通过编译
数组arr为int类型的一维数组,只能转换成Object对象,而不能转换成Object[]对象,因为基本数据类型的一维数组可以被当做Object类型使用,而不能当做Object[]类型使用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马