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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘源 中级黑马   /  2012-8-1 15:40  /  1581 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘源 于 2012-8-1 21:57 编辑

部分代码如下:
int[] a1 =new int[2];
Object  aObj1 =a1;
Object[]  aObj2 =a1;
String[] a2 =new String[]{"a","b"};
Object  aObj3 =a1;
Object[]  aObj4 =a1;
为什么红色那个语句系统会报错啊。听视频的意思好像是int不是Object的子类。如果不是的话,那它是属于谁啊,我把API找了下,没有找到int那个类啊
有明白人讲下吗。
顺便把String那个也讲下吗,脑袋笨,视频没怎么听懂。谢谢!




问题已经解决”。

评分

参与人数 1黑马币 +10 收起 理由
杨志 + 10 鼓励一下!加油!

查看全部评分

3 个回复

倒序浏览
int是基本数据类型,他没有父类,甚至没有自己的类,就如你在API怎么也不会找到class int
不过他有一个包装类Integer,如果你把int[]换成Integer[],Object[]  aObj2 =a1;就不会报错了

String不属于基本数据类型,他有自己独有的类,继承了Object
String[]中的元素都是String类型,所以每个元素都是属于Object的子类
因此String[] a2 =new String[]{"a","b"};
Object  aObj3 =a2;
Object[]  aObj4 =a2;
符合规则,就不会报错.
回复 使用道具 举报
本帖最后由 李东升 于 2012-8-1 16:03 编辑
  1. int[] a1 =new int[2];
  2.                 Object  aObj1 =a1;
  3.                 Object[]  aObj2 ={a1};
  4.                 String[] a2 =new String[]{"a","b"};
  5.                 Object  aObj3 =a1;
  6.                 Object[]  aObj4 ={a1};
复制代码
这样子就不会报错了。


所有类都是Object的子类,基本类型除外。出错原因:上面你也写了Object  aObj1 =a1;,那么a1这个数组就能看做object对象,你把一个Object对象赋值给Object数组怎么可能不报错呢?这就好像是把一个int值赋值给int数组。正确的应该是把int值赋值给int数组的其中一个元素。所以你的代码也可以这样改
  1. int[] a1 =new int[2];
  2.                 Object  aObj1 =a1;
  3.                 Object[]  aObj2 =null;
  4.                 aObj2[0]=a1;
  5.                 String[] a2 =new String[]{"a","b"};
  6.                 Object  aObj3 =a1;
  7.                 Object[]  aObj4 =a2;
  8.                
复制代码
String是属于Object类的子类,可以通过上述方法赋值给Object对象,也可以赋值给Object数组的某个元素。
回复 使用道具 举报
问题已经解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马