62,616
社区成员
发帖
与我相关
我的任务
分享
List<Integer> list = new ArrayList<>();
list.add(1);
System.out.println(list);
其实也是输出的list的toString方法,看源码我们可以知道:
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> {
可以看到 ArrayList --> AbstractList --> AbstractCollection
而在AbstractCollection类型可以看到重写了 toString 方法
public String toString() {
Iterator<E> i = iterator();
if (! i.hasNext())
return "[]";
StringBuilder sb = new StringBuilder();
sb.append('[');
for (;;) {
E e = i.next();
sb.append(e == this ? "(this Collection)" : e);
if (! i.hasNext())
return sb.append(']').toString();
sb.append(", ");
}
}
该方法也是循环输出集合中的元素,所以直接打印list就可以看到里面的数据,而至于数组为什么不能呢,byte[] 它只是一种基本数据类型,并不是一个类,就算是Byte[]那也只是一个包装类,里面存的数据也是Byte类型,而不是Byte[],Byte[]只是说明里面存了一组Byte类型的数据而已。不知道这么说楼主明白了没。