Thinking In Java --- 讀書筆記

帶標籤的break、continue, 跳轉到標籤聲明位置。java

switch支持 short、byte、char、int、 枚舉、String, 支持前四個類型的包裝類(自動拆箱)。數組

成員初始化: new對象, 初始化字段默認值,按字段的出現順序進行初始化。併發

構造器初始化:變量定義的前後順序決定了初始化的順序, 先初始化字段而後調用構造函數。函數

靜態數據初始化: 優先初始化靜態變量(只在類第一次加載時初始化), 在初始化普通變量。工具

final: 對於基本類型,final使數值恆定不變;對於引用對象,引用地址恆定不變。final定義的類變量,須要再定義時、構造方法中或者普通方法快中初始化;static final定義的類變量,須要再定義時、靜態方法快中初始化。對象

多態: 只有普通方法的調用是多態的,向下轉型會進行類型檢查(以異常拋出)。繼承

內部類 接口

(1)普通內部類初始化,經過外部類對象去建立內部類對象 new Outer().new Inner();    內存

(2)靜態內部類(嵌套類):new Outer.Inner(); 嵌套類對象建立不依賴外圍類對象,不能訪問外圍類非靜態對象。字符串

String 原引用地址指向值不可變, 全部方法返回新的字符串對象。

RTTI 反射: Method、Class、Reflect包; Class.newInstance()不能是接口, 依賴無參構造函數。

泛型: 泛型不能實例化, 不能實例化數組 , 例如T t=new T() 解決 T t=(T)new Object();   \

            類型擦除;

數組:數組標識符是一個引用,保存指向其餘對象的引用; 對象數組保存的是引用,基本類型數組直接保存基本類型的值;

    Arrays工具類,sort 、toString、binarySearch,sort基本類型用快排,對象類型用堆排;

    泛型數組初始化問題,正確Peel<Integer>[] peels = new Peel[2]; 錯誤Peel<Integer>[] peels = new Peel<Integer>[2];

容器:

    List list2 = Collections.unmodifyList(list);   list2和list都不能發生改變, 數組內存結構不能改變

 序列化: 若是序列化到單一流, 就能夠恢復原先的對象網。

    Externalizable和Serializable:

1.Serializable序列化時不會調用默認的構造器,而Externalizable序列化時會調用默認構造器的。 
2.Serializable:一個對象想要被序列化,那麼它的類就要實現 此接口,這個對象的全部屬性(包括private屬性、包括其引用的對象)均可以被序列化和反序列化來保存、傳遞。 
Externalizable:他是Serializable接口的子類,有時咱們不但願序列化那麼多,能夠使用這個接口,這個接口的writeExternal()和readExternal()方法能夠指定序列化哪些屬性。

枚舉: import static 枚舉類, 無需再用 枚舉類.屬性 , 直接使用 屬性。枚舉繼承自java.lang.Enum, 不可再繼承, 能夠實現接口。枚舉可用在switch。

併發: Callable具備類型參數的泛型,類型參數表示call中返回的值類型,必須用ExecutorService.submit()方法調用。

相關文章
相關標籤/搜索