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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 揭耀祖 中级黑马   /  2012-6-8 11:35  /  1369 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

      int[] a1 = new int[3];
       int[] a2 = new int[4];
       int[][] a3 = new int[2][3];
       String[] a4 = new String[3];   

       Object obj1 = a1;
       Object obj2 = a2;
       Object[] obj3 = a1;//为什么这句话是错的?
       Object[] obj4 = a3;
       Object[] obj5 = a4;
看张老师的视频的时候看到这个,有点明白又有点不太明白,为什么Object[] obj3 = a1;是错的呢?

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

4 个回复

倒序浏览
                        Integer[] a1 = new Integer[3];
               int[] a2 = new int[4];
               int[][] a3 = new int[2][3];
               String[] a4 = new String[3];   

               Object obj1 = a1;
               Object obj2 = a2;
               Object[] obj3 = a1;//int[] a1 = new int[3];//左边的为Object[]类型 右边的为int[]类型当然不行  换成Integer[]可以提升到Object[]类型
             int[] a0 = new int[3];
                        Integer[] i=a0; //这个也不行 int[]这是一个类型  并不能转换成Integer[]
               Object[] obj4 = a3;
               Object[] obj5 = a4;

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
你这个意思是将int数组转为Object的数组。

为什么错呢,因为他这里直接将整个a1整型数组自动封装为一个对象了~
应该是这么设定的,可以理解为:老娘就是要一串儿~才能看作一个对象。
因而int[]只可以转为一个Object而不能转为Object[]。

这就解释了
Object obj1 = a1;
Object obj2 = a2;
为什么可以通过编译的原因。

因而若是int的二维数组,这样的话{{1,2,3}, {4,5,6}, {7,8}}
123、456、78分别作为一个Object,也就是一个Object[]啦~

字符串也就好理解了,一串一串的嘛~

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 恭喜了,不过形容得算你狠~~

查看全部评分

回复 使用道具 举报
就是类型不兼容啊
回复 使用道具 举报
首先要明确int是原生数据类型,而String是对象数据类型
数组在java程序中为一个对象类型,因此就可以这样理解:
int的一维数组为对象类型,String一维数组为对象数组类型
int的二维数组就成为对象数组类型的了

所以上面的问题就很明确了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马