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

© 进击的蜗牛 中级黑马   /  2015-7-13 15:21  /  463 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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]    //这两个不同的原理是什么?

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

2 个回复

倒序浏览
Arrays.toString是把所数组转换成字符串。
而toString呢,所有的类都继承Object类,我们要重写它的toString方法。如果不重写的话,打印的是内存地址。

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1 给强哥来个赞

查看全部评分

回复 使用道具 举报
首先数组调用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[]一样。

自己写的 希望你能理解 学到高新技术,反射那里会讲。不要着急,慢慢看视频
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马