黑马程序员技术交流社区

标题: 在看高新技术时遇到的一个疑惑? [打印本页]

作者: 潘廖明    时间: 2013-5-10 23:38
标题: 在看高新技术时遇到的一个疑惑?
本帖最后由 潘廖明 于 2013-5-13 12:51 编辑

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

作者: 范德农    时间: 2013-5-11 02:09
这是因为JDK版本的历史原因造就的。
因为int不是Object的类型[* int[] 是Object类型 ],所以jdk1.4的方法Arrays.asList(Object[] obj)是不适用的,所以只能按jdk1.5的走,把int[]作为一个Object,就打印出了这种效果[[I@1cfb549]。而String是Object.
作者: java冬冬    时间: 2013-5-11 03:05
  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:}

作者: 潘廖明    时间: 2013-5-11 14:54
范德农 发表于 2013-5-11 02:09
这是因为JDK版本的历史原因造就的。
因为int不是Object的类型[* int[] 是Object类型 ],所以jdk1.4的方法Ar ...

那JDK1.5asList(T...t)数据类型,基本类型数据类型不能够被泛化,所以应该是用包装类型,那 String[]算是包装类型,为什么要回去调用1.4asList(Object[] obj)呢?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2