package com.czff.study.interview.toString;
import java.util.ArrayList;
import java.util.Collection;
/**
* @author cuidi
* @date 2020/9/5 14:06
* @description
*/
public class ArrayList2String {
public static void main(String[] args) {
/**
* 為什么c輸出的不是地址值呢?
* A:Collection c = new ArrayList();
* 這是多態(tài),所以輸出c的toString()方法,其實是輸出ArrayList的toString()
* B:看ArrayList的toString()
* 而我們在ArrayList里面卻沒有發(fā)現toString()。
* 以后遇到這種情況,也不要擔心,你認為有,它卻沒有,就應該去它父親里面看看。
* C:
* ArrayList<E> extends AbstractList<E>
* AbstractList<E> extends AbstractCollection<E>
* AbstractCollection的toString()的方法源碼
*/
Collection c = new ArrayList();
c.add("hello");
c.add("world");
c.add("java");
/**
* 對于這段代碼: System.out.println(c);
* 想看他是怎么輸出的,點擊println看它的源碼
* 發(fā)現是按String.valueOf(obj)輸出的,繼續(xù)點進去
* 發(fā)現sout是按對象的toString方法輸出的
* 那再去看ArrayList的toString是怎么重寫的就好了
*/
System.out.println(c);
System.out.println(c.toString());
}
}

Diagram for ArrayList.png