類的基本成員才有預設值 finalize()並非析構,Java中沒有析構,使用finalize()通常在於跨語言調用情景:比如使用C進行malloc記憶體分配以後,要在finalize()方法中進行free,以便於提供一種記憶體釋放的方法,否則當量達到一定程度時會造成out of memories。Jv ...
-
類的基本成員才有預設值
-
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對象通常當做靜態域存儲,使得每個單獨的線程都被分配了自己的存儲