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