java中list对象为什么能直接输出其中的元素?object的对象却不能呢?

List integers = new ArrayList();

integers.add(1);

integers.add(2);

System.out.println(integers);

输出:[1, 2]

Object[] objects = {1, 2};

System.out.println(objects);

System.out.println(Arrays.toString(objects));

输出:

[Ljava.lang.Object;@73e878e0

[1, 2]

那么问题来了,为什么list对象的不用Arrays.toString(**)就能显示其中的元素呢?为什么object对象却不能呢?求教。

回答:

ArrayList

图片描述

图片描述

Object

图片描述

回答:

因为ArrayList类已经实现了toString方法。

回答:

Object[] objects = {1, 2};

System.out.println(objects);

首先,objects本身就是一个对象,是一个数组对象,其没有重载toString()方法,因此打印出来就是对象本身的类型和地址信息,这点毋庸置疑;

Object[] objects = {1, 2};

System.out.println(Arrays.toString(objects));

为什么Arrays.toString()能打印出Object的值?这个我们翻看一下源码就了然了:

// Arrays.toString()方法的源码

public static String toString(Object[] a) {

if (a == null)

return "null";

int iMax = a.length - 1;

if (iMax == -1)

return "[]";

StringBuilder b = new StringBuilder();

b.append('[');

for (int i = 0; ; i++) {

b.append(String.valueOf(a[i]));

if (i == iMax)

return b.append(']').toString();

b.append(", ");

}

}

很容易理解,Arrays.toString()相当于实现了Object[]数组对象的toString(),因此自然就能打印出值了。

以上是 java中list对象为什么能直接输出其中的元素?object的对象却不能呢? 的全部内容, 来源链接: utcz.com/p/169142.html

回到顶部