黑马程序员技术交流社区
标题:
关于反射技术的小问题
[打印本页]
作者:
杨银川
时间:
2011-12-26 17:43
标题:
关于反射技术的小问题
本帖最后由 杨银川 于 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]
问题:怎么字符串数组的形式就输出了,而整形的却是哈希码啊?
作者:
马伟奇
时间:
2011-12-26 18:01
因为String是对象类型,int是基本数据类型
作者:
张冬冬
时间:
2011-12-26 18:14
这个前面应该是有一个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
想打出来,可以使用Integer对象来实现。
Integer[] a1=new Integer[]{1,2,3};
这样就可以打印出来了。
作者:
颜宗茂
时间:
2011-12-26 20:16
因为String是对象类型,String[]既可以为一个对象的引用也可以是数组的引用,int是基本数据类型,int[]只是对象的引用,所以输出的时候是以一个对象的引用输出,那么久是哈希值,张老师的视频也有讲过的。
作者:
付星
时间:
2011-12-26 21:07
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));
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2