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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 于汝国 于 2011-12-23 15:54 编辑

今天学习了数组的反射,虽然张孝祥老师讲解了Arrays.asList()方法处理int[]和String[]时的差异,但我还不是非常的清楚,求详解......

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

5 个回复

倒序浏览
杨强 黑马帝 2011-12-23 12:20:12
沙发
Array.asList()方法处理int[]和String[]时的差异
   int arr[] = new int[]{3,4,5,6,7};
   System.out.println(Arrays.asList(arr));       // 输出:[[I@c17164],而不是:3,4,5,6  因为arr被当做object 而不是Object[]
   System.out.println(Arrays.asList(new String[]{"abc","def"})); // 输出:[abc, def]

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
黄喆 黑马帝 2011-12-23 14:02:06
藤椅
按照张老师的讲解,个人理解:
Arrays.asList()方法在JDK 1.4版本中参数是 Arrays.asList(Object[] a) 接收一个Object[]  数组,
Arrays.asList()方法在JDK 1.5版本中参数是 Arrays.asList(T...a) 接收一个是一个对象,
int  不属于Object 类 所以int[] 也不是 Object[]  ,int[] 则属于一个Object对象,按照JDK 1.5版本以上的方法执行
将int[] 当作一个对象存入List中。
String[] 数组 属于 Object[]  数组 可以按照JDK 1.4版本中参数是 Arrays.asList(Object[] a) 的方法将每个元素存入到List中

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
谢谢各位,明白了!嘻嘻
回复 使用道具 举报
int[] 的元素是基本数据类型,而集合中存放的是对象,如果你要把int[]转成集合,那集合会把整个int[]数组做为一个对象,将这个数组的地址放入集合,而不是int[]数组中的元素地址。这时你可以把int[]数组封装成对象Integer ,这样数组中的元素就被装箱成对象了,Integer数组中的每个元素就可以成为集合中的元素。

而String[]中的字符串本身就是对象,所以转成集合时,直接变成集合中的元素。

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
恩,原来如此,谢谢各位
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马