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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

摘自张老师视频中的源码:[code=java]int [] a1 = new int[]{1,2,3};
int [] a2 = new int[4];
int[][] a3 = new int[2][3];
String [] a4 = new String[]{"a","b","c"};

Object aObj1 = a1;
Object aObj2 = a4;
//Object[] aObj3 = a1;
Object[] aObj4 = a3;
Object[] aObj5 = a4;[/code]对这个相互之间的赋值,不明白,特别是最后三行代码,谁能解释一下?

评分

参与人数 1技术分 +2 收起 理由
admin + 2 这个问题问得不错o !

查看全部评分

7 个回复

倒序浏览
黑马网友  发表于 2011-9-12 22:48:34
沙发
首先我们先看a1和a2这两个一维数组,一个数组代表一个对象你也知道吧,a1和a2是 int[] 类型的,代表一个int[] 类型的对象,里面存放的元素是JAVA的基本类型int型的,在JAVA里任何类型的对象都默认继承自Object类,所以Object aObj1 = a1 这样可以赋值。a3是一个int[][] 的二维数组,就是一维数组里面存放的元素是int[] 类型的引用,这样就是一个对象数组,所以要只能赋值给Object[] 类型,a4跟二维数组一样里面存放的是对象,所以都要赋值给Object[] 类型的变量,你只要想想数组里存放的具体是什么元素,就理解了

评分

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

查看全部评分

回复 使用道具 举报
在这一块我也迷糊了好长时间,也是很晕,其实回答这个问题的时候,我也不敢保证说得正确,有非常清楚的人,回答楼主问题的同时,顺便评价一下我的答案
你可以简单的认为(我就是这么认为的),java数据类型分为两种:基本数据类型和对象类型,基本类型有八种(相信你也非常清楚)其他的都是对象,int类型是基本类型,int[]是对象类型

Object[] aObj3 = a1;//把a1的每个元素当成Object,a1中元素都是int类型,不是对象类型,至于这边为什么不自动装箱,我就解释不清楚了
Object[] aObject4 = a3;//int[][]红色部分当成Object[]中的元素对象,int[]是对象类型
Object[] aboject5 =a4;//String[]中的每个元素都是String类型,也就可以当作Object[]中的元素类型

另外我迷糊的原因是
Object[] aObj3 = a1;
难道a1不能被当作一个对象元素作为Object[]的唯一元素呢
于是我就在a1上加了{}
代码
                Object aObj1 = a1;
                Object aObj2 = a4;
                Object[] aObj3 = {a1};
                Object[] aObj4 = a3;
                Object[] aObj5 = a4;
结果这样就可以,去掉大括号就不行,但是在高新技术35集第10分钟arrayAttr=1就可以,我想这大概是java里面对某些特殊类型的特殊对待吧,我没有深究下去,对于初学者没必要钻得太深——以上个人理解+猜测
[ 本帖最后由 史卫平 于 2011-09-12  23:01 编辑 ]

评分

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

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-13 01:48:41
板凳
除了基本类型,其他都是对象。记住这点即可
回复 使用道具 举报
黑马网友  发表于 2011-9-13 13:42:21
报纸
我也是前两天刚看的,就以int[] 来说,int[]相当于object,而String[]却相当于Object[] ,因为int[]里面的成员是基本类型,而String[] 里面装的就是对象了,也就是说一个一维基本类型的数组相当于一个对象,所以基本类型的多维数组就是Object[] ,非基本类型即是对象,所以String[]即是Object[]

评分

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

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-13 15:30:13
地板
嗯,说得对,都是对象。你就把数组看成是对象就好了,把一个对象赋值给一个Object对象,一个数组赋值给一个对象数组。
回复 使用道具 举报
黑马网友  发表于 2011-9-13 17:28:27
7#
引用类型 就是对象,, 就这么想
回复 使用道具 举报
黑马网友  发表于 2011-9-16 11:33:44
8#
02.int [] a2 = new int[4];
03.int[][] a3 = new int[2][3];
04.String [] a4 = new String[]{"a","b","c"};
06.Object aObj1 = a1;
07.Object aObj2 = a4;
08.//Object[] aObj3 = a1;
09.Object[] aObj4 = a3;
10.Object[] aObj5 = a4;
Object是所有类的父类  这点因该知道吧?
int[] 数组 a1 给Object   aObj1  和 07.Object aObj2 = a4; 是一样的 都会成为一个Object数组 a4作为一个String[] 是相当于对象的  而a1是int[] 成员等于基本类型
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马