NO IMAGE
程式碼:
Collection c = new ArrayList();
c.add("hello");
c.add("world");
c.add("java");
System.out.println(c.toString);
為什麼c輸出不是地址值呢?
A:Collection c = new ArrayList();
這是多型,所以輸出c的toString方法,其實輸出是ArrayList的toString()
B:看ArrayList的toString()
而我們在ArrayList裡面卻沒有發現toString()。
以後遇到這種情況,也不要擔心,你認為有,它卻沒有,就應該去他父親裡面看看。
C:toString()方法的原始碼
public String toString() {
Iterator<E> i = iterator();//集合本身呼叫迭代器方法,得到集合迭代器
if (!i.hasNext())
return "[]";
StringBuilder sb = new StringBuilder();
sb.append('[');
for (;;) {
E e = i.next();//e = hello,world
sb.append(e == this ? "(this Collection)" : e);
if (!i.hasNext())
//[hello, world, java]
return sb.append(']').toString();
sb.append(", ");
}
}