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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨银川 黑马帝   /  2011-12-26 17:43  /  1875 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨银川 于 2011-12-26 23:05 编辑

int[] a1=new int[]{1,2,3};
String[] a4=new String[]{"a","b","c"};
System.out.println(Arrays.asList(a1));
System.out.println(Arrays.asList(a4));
运行结果:[[I@14318bb]
                [a, b, c]
问题:怎么字符串数组的形式就输出了,而整形的却是哈希码啊?

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

5 个回复

倒序浏览
因为String是对象类型,int是基本数据类型
回复 使用道具 举报
这个前面应该是有一个object的数组,因为String是object的类型,但int不是,这里的int数组没有被当成一个数组来看待,一维的int数组不行,二维的就可以,它是把一个int[]当作一个数组,存进object数组中的,如果要像打印出像String所有的元素出来,你把int[] a1=new int[]{1,2,3};写成int[] a1=new object[]{new int[]{1,2,3}};或者是告诉编译器你把我传进来的int[]当成一个元素看待,应该写成这样int[] a1=(object)new int[]{1,2,3};就可以了.
回复 使用道具 举报
李楠 黑马帝 2011-12-26 18:15:00
板凳
想打出来,可以使用Integer对象来实现。
Integer[] a1=new Integer[]{1,2,3};
这样就可以打印出来了。
回复 使用道具 举报
因为String是对象类型,String[]既可以为一个对象的引用也可以是数组的引用,int是基本数据类型,int[]只是对象的引用,所以输出的时候是以一个对象的引用输出,那么久是哈希值,张老师的视频也有讲过的。
回复 使用道具 举报
付星 黑马帝 2011-12-26 21:07:55
地板
int[] a1=new int[]{1,2,3};
String[] a4=new String[]{"a","b","c"};

Object o=a1;//这样是可以的
Object[] o1=a1;//这样是报错的,因为int[]不能转成Object[],如果把int换成Integer就不错了
Object[] o2=a4;//这样也是对的,由此可知,只有引用类型数组才可以
//下面出现这样的原因,根设计有关,根据jdk文档说明,基本类型的组数,会有专门说明的方式,如:
//int[]  对应[I...]  long[] 对应[J...] char[]对应[C...]等,如想看到数组,改成引用的Integer包装类即可
//但我想和数组类型toString()方法实现有关系,内部对各类型的数组toString()重写的内容也不样,这样基本类型toString()是[标志符@hashCode],引用类型toString()就是以逗号分隔的符号
System.out.println(Arrays.asList(a1));
System.out.println(Arrays.asList(a4));
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马