黑马程序员技术交流社区

标题: 小问题 求解答 [打印本页]

作者: 进击的蜗牛    时间: 2015-7-13 15:21
标题: 小问题 求解答
int[] a1 = new int[]{1,2,3};
String[] a4 = new String[]{"111","222","333"};

System.out.println(a1.toString());                              [I@1d5550d
System.out.println(a4.toString());                              [Ljava.lang.String;@c2ea3f
System.out.println(Arrays.toString(a1));                    [1, 2, 3]
System.out.println(Arrays.toString(a4));                     [111, 222, 333]//Arrays.toString   和   toString  的区别是什么?


System.out.println(Arrays.asList(a1));                         [[I@1d5550d]
System.out.println(Arrays.asList(a4));                         [111, 222, 333]    //这两个不同的原理是什么?


作者: 耀阳圣尊    时间: 2015-7-13 16:24
Arrays.toString是把所数组转换成字符串。
而toString呢,所有的类都继承Object类,我们要重写它的toString方法。如果不重写的话,打印的是内存地址。
作者: 你好我是潘机智    时间: 2015-7-13 16:34
首先数组调用toString()方法是输出数组的地址值
Arrays.toString(),返回的是数组的字符串表现形式

as.list() 方法
static <T> List<T> asList(T... a)

asList()方法在JDK1.4版本中,接收的Object类型的数组,
而String[]可以作为Object数组传入,因为String是Object类型的,
但是int[]不可以作为Object数组传入,int不是Object类型的,所以只能按照JDK1.5版本来处理。
在JDK1.5版本中,需要传入的是一个可变参数,所以int[]就被当作是一个object,
也就是一个参数,而不是数组传入,所以打印的结果还是跟直接打印int[]一样。

自己写的 希望你能理解 学到高新技术,反射那里会讲。不要着急,慢慢看视频




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