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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 潘廖明 中级黑马   /  2013-5-10 23:38  /  1020 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 潘廖明 于 2013-5-13 12:51 编辑

Arrays.asList()方法处理int[]String[]时差异的原因?

评分

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

查看全部评分

4 个回复

正序浏览
范德农 发表于 2013-5-11 02:09
这是因为JDK版本的历史原因造就的。
因为int不是Object的类型[* int[] 是Object类型 ],所以jdk1.4的方法Ar ...

那JDK1.5asList(T...t)数据类型,基本类型数据类型不能够被泛化,所以应该是用包装类型,那 String[]算是包装类型,为什么要回去调用1.4asList(Object[] obj)呢?
回复 使用道具 举报
  1. int[] a1 = new int[]{1,2,3};
  2. String[] a4 = new String[]{"a","b","c"};
  3. System.out.println(Arrays.asList(a1));//输出 [[I@ca0b6]
  4. System.out.println(Arrays.asList(a4));//输出[a,b,c]

复制代码
1.4版本 asList(Object[] obj) ,1.5版本 asList(T...a),因为int[]不可以转换成Object[],所以是1.5版本的方法,接收的是对象,打印哈希码,
而String[]可以被当做Object[]类型,所以是1.4版本方法{:soso_e152:}

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
这是因为JDK版本的历史原因造就的。
因为int不是Object的类型[* int[] 是Object类型 ],所以jdk1.4的方法Arrays.asList(Object[] obj)是不适用的,所以只能按jdk1.5的走,把int[]作为一个Object,就打印出了这种效果[[I@1cfb549]。而String是Object.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马