閱讀原始碼,從ArrayList開始
阿新 • • 發佈:2020-10-09
## 前言
為啥要閱讀原始碼?一句話,為了寫出更好的程式。
一方面,只有瞭解了程式碼的執行過程,我們才能更好的使用別人提供的工具和框架,寫出高效的程式。另一方面,一些經典的程式碼背後蘊藏的思想和技巧很值得學習,通過閱讀原始碼,有助於提升自己的能力。當然,功利的講,面試都喜歡問原始碼,閱讀原始碼也有助於提升通過面試的概率。
結合今天的主題,一個很簡單的問題,在剛學習集合時,我們都使用過如下程式碼,但是下面幾行程式碼有區別嗎?
```java
List list1 = new ArrayList();
List list2 = new ArrayList(0);
List list4 = new ArrayList(10);
```
有人可能會說,沒指定初始值就按預設值,指定了初始值就按指定的值構造一個數組。真的是這樣嗎?如果你對上面這個問題有疑惑,就說明你該看看原始碼了。
**學習程式設計的過程千萬不要人云亦云,一定要親自看看。**
如何閱讀原始碼,每個人的方式不同,這裡僅以自己習慣的方式來說。以今天的主題為例,ArrayList是幹嘛的?怎麼用?這就延伸到一條路線,先看類名及其繼承體系——它是幹嘛的,再看建構函式——如何造一個物件,當然,建構函式會用到一些變數,所以在此之前我們需要先了解下用到的常量值和變數值,最後,我們需要了解常用的方法以及它們是如何實現的。
對於閱讀大多數類基本都是按照:類名——>變數——>建構函式——>常用方法。
本文只會選取有代表性的一些內容,不會講到每一行程式碼。
## 類簽名
好像沒有類簽名這個說法,這裡是對照函式簽名來說的,簡單說就是一個類的類名以及它實現了哪些介面,繼承了哪些類,以及一些泛型要求。
```java
public class A