類的基本成員才有默認值
finalize()並非析構,Java中沒有析構,使用finalize()通常在於跨語言調用情景:比如使用C進行malloc內存分配以後,要在finalize()方法中進行free,以便於提供一種內存釋放的方法,否則當量達到一定程度時會造成out of memories。Jvm在進行gc時會優先調用finalize(),但這並不意味著一定會釋放finalize中指定的對象,因為gc最終只和內存相關,當內存達到回收條件時才會進行垃圾回收
靜態塊static{xxx;}在類加載時就進行初始化,非靜態塊和構造函數在創建對象時才會初始化或調用,並且非靜態塊要優先於構造函數。
內部類可以訪問外圍類所有成員,包括private成員
通過內部類可以變相的實現“多重繼承”
匿名內部類常用於實例初始化
動態代理,通過反射動態地創建Proxy,Proxy用於添加一些你想對Target進行的額外操作,然後在適當的時候將請求轉發給Target。換句話說,Proxy在Target上進行了一層封裝修改。
HashMap,通過設置容量和負載因子,以調整容器的性能。默認容量達到四分之三滿時將自動進行擴充&再散列。因此,如果能夠預估存儲容量,然後設置一個恰當的初始容量,將可以避免自動再散列的開銷
transient關鍵字可以避免敏感信息字段的序列化
ThreadLocal對象通常當做靜態域存儲,使得每個單獨的線程都被分配了自己的存儲