javaAPI_集合基礎_集合中toString()方法解析



集合中的toString()

先看一段代碼:
public static void main(String[] args) {
//創建Collection對象,由於Collection是一個接口,所以是不能夠實例化的,所以能夠使用其子類對象
Collection c = new ArrayList();
c.add("hello");
c.add("world");
c.add("java");
System.out.println(c);

}
//輸出結果:[hello, world, java]

由上可見,輸出的是一個拼接好的字符串,而不是地址值,為什么呢?
首先:Collection c = new ArrayList();這是一個多態的體現,輸出的c其實是
ArrayList的toString()方法。

那么,我們應該找ArrayList中的方法,那么我們在ArrayList中去查找相關的toString()方法,看是否有該方法,但是沒有找到。

跟進查找,我們去ArrayList的父類中去查找,之后再晚上找,在AbstractCollection中找到相關源碼:

public String toString() {
//調用迭代器,獲取元素
Iterator<E> it = iterator();
if (! it.hasNext())
return "[]";

StringBuilder sb = new StringBuilder();
sb.append('[');
//無條件死循環
for (;;) {
E e = it.next();
sb.append(e == this ? "(this Collection)" : e);
if (! it.hasNext())
return sb.append(']').toString();
sb.append(',').append(' ');
}
}
//由上述代碼可見,其實toString就是遍歷元素並拼接"[",和"]".並返回拼接結果。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM