集合的toString()方法原始碼解析
程式碼:
Collection c = new ArrayList();
c.add("hello");
c.add("world");
c.add("java");
System.out.println(c);
為什麼c輸出的不是地址值呢?
A:Collection c = new ArrayList();
這是多型,所以輸出c的toString()方法,其實是輸出ArrayList的toString()
B:看ArrayList的toString()
而我們在ArrayList裡面卻沒有發現toString()。
以後遇到這種情況,也不要擔心,你認為有,它卻沒有,就應該去它父親裡面看看。
C:toString()的方法原始碼
public String toString() {
Iterator<E> it = iterator(); //集合本身呼叫迭代器方法,得到集合迭代器
if (! it.hasNext())
return "[]";
StringBuilder sb = new StringBuilder();
sb.append('[');
for (;;) {
E e = it.next(); //e=hello,world,java
sb.append(e == this ? "(this Collection)" : e);
if (! it.hasNext())
//[hello, world, java]
return sb.append(']').toString();
sb.append(',').append(' ');
}
}
相關文章
- 集合框架-ArrayList集合的toString()方法原始碼解析框架原始碼
- 集合框架-TreeSet的add()方法的原始碼解析框架原始碼
- 集合-ArrayList 原始碼解析原始碼
- 【JavaSE】Map集合,HashMap的常用方法put、get的原始碼解析JavaHashMap原始碼
- 集合-ConcurrentLinkedQueue 原始碼解析原始碼
- Java集合之Hashtable原始碼解析Java原始碼
- Java 集合Hashtable原始碼深入解析Java原始碼
- Java集合之ArrayList原始碼解析Java原始碼
- Java集合Stack原始碼深入解析Java原始碼
- JAVA集合:LinkedList原始碼解析Java原始碼
- Java集合之HashMap原始碼解析JavaHashMap原始碼
- Java集合類:AbstractCollection原始碼解析Java原始碼
- 集合框架-HashSet集合的add()方法的原始碼框架原始碼
- Java集合(6)之 HashMap 原始碼解析JavaHashMap原始碼
- Java 集合系列:Vector原始碼深入解析Java原始碼
- Java集合之LinkedList原始碼解析Java原始碼
- Java集合-ArrayList原始碼解析-JDK1.8Java原始碼JDK
- Java 基礎(七)集合原始碼解析 MapJava原始碼
- Java 基礎(四)集合原始碼解析 ListJava原始碼
- Java 基礎(六)集合原始碼解析 QueueJava原始碼
- Java 基礎(三)集合原始碼解析 CollectionJava原始碼
- Java 基礎(二)集合原始碼解析 IteratorJava原始碼
- Java集合框架之 Java HashMap 原始碼解析Java框架HashMap原始碼
- Dart語法篇之集合的使用與原始碼解析(二)Dart原始碼
- Binder的使用方法和原始碼解析原始碼
- Glide原始碼解析二---into方法IDE原始碼
- Java集合類,從原始碼解析底層實現原理Java原始碼
- js中的toString方法JS
- Symbol toString() 方法Symbol
- Java併發集合類ConcurrentHashMap底層核心原始碼解析JavaHashMap原始碼
- 【Java集合原始碼剖析】Java集合框架Java原始碼框架
- 集合原始碼分析[2]-AbstractList 原始碼分析原始碼
- 集合原始碼分析[1]-Collection 原始碼分析原始碼
- 集合原始碼分析[3]-ArrayList 原始碼分析原始碼
- Java集合原始碼剖析——ArrayList原始碼剖析Java原始碼
- 【Java集合原始碼剖析】ArrayList原始碼剖析Java原始碼
- 【Java集合原始碼剖析】Vector原始碼剖析Java原始碼
- 【Java集合原始碼剖析】HashMap原始碼剖析Java原始碼HashMap