ArrayList的toString()方法

这个小程序中为什么输出[100,200]呢

import java.util.ArrayList;
import java.util.List;
public class Hello {
 public static void main(String[] args) {
  List<Integer> list = new ArrayList<Integer>();
  list.add(100);
  list.add(200); 
  System.out.println(list);
 }
}

找了半天toString方法原来在AbstractCollection类中重写的 , 从ArrayList类的声明public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable 中找到 AbstractList  ,从这个类的声明public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E>中找到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(", ");
    }   
}

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页