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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 蓬头小道士 中级黑马   /  2015-8-14 21:25  /  1024 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int型数组如何才能像String类型数组一样打印输入?下面为程序:
class ReflectDemo
{
public static void main(String[] args)
{
  String[] str1={"a","b","c"};
  int[] num={1,2,3};
  System.out.println(Arrays.asList(str1));//打印结果为[a,b,c]
  System.out.println(Arrays.asList(num));//打印结果为[[I@19e0bfd];
}
}
问题:int[]为什么不能像String[]一样打印输出?

6 个回复

倒序浏览
本帖最后由 wode1311 于 2015-8-14 21:42 编辑

个人根据API文档,查询并验证后推测如下:
根据API文档,可知asList(T...a)中参数a是支持列表的数组,而列表中只能存储对象,int是基本类型,
错误结果:在上面的程序中应该是将int数组的地址作为字符串传递给参数,打印出来的是int数组的地址。
更正:如果将int数组改为Integer类型,问题就可以解决了。
回复 使用道具 举报
如果根据根据底层源代码看的话,asList(T...a)底层方法中用到了反射a.getClass()。你可以自己看看
回复 使用道具 举报
你第一次调用Arrays.asList(str1)返回的是String泛型的集合
你第二次调用Arrays.asList(num)返回的是int[](返回的是数组)泛型的集合
明白了么?第一个集合里面的元素是a,b,c  第二个集合里面的元素是 int[] num(所以你输出打印是地址值)
回复 使用道具 举报
木易水寒 发表于 2015-8-14 22:04
你第一次调用Arrays.asList(str1)返回的是String泛型的集合
你第二次调用Arrays.asList(num)返回的是int[]( ...

谢谢了!
回复 使用道具 举报
wode1311 发表于 2015-8-14 21:41
个人根据API文档,查询并验证后推测如下:
根据API文档,可知asList(T...a)中参数a是支持列表的数组,而列 ...

谢谢了!
回复 使用道具 举报
wode1311 发表于 2015-8-14 22:00
如果根据根据底层源代码看的话,asList(T...a)底层方法中用到了反射a.getClass()。你可以自己看看 ...

谢谢了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马