初始化與清理 —— initialize
1 構造器是一種特殊的類型,因爲它沒有返回值,而且在後面會知道,所有的構造函數可以把它理解爲特殊的靜態方法(the constructor is actually a static method.)。
如果你是在類被加載的時候看待,那麼它是static的。因爲在JVM加載類時首先會初始化static屬性爲默認值,在這裏構造器會被調用。
如果你是在創建對象的時候看待,那麼它不是static的,構造器在裏就如對象引用調用成員方法一樣。類名後的這個括號“()”就表示調用構造器。如果沒有定義構造器,編譯器會默認創建一個無參的構造器。
2 方法調用時,如果傳入的數據類型小於方法中聲明的形式參數類型,實際的數據類型會被提升。換句話說:字節數小的數據類型向最接近其字節數的類型轉換
boolen->char->byte->short->int->long->float->double
如果傳入的數據類型大於方法中聲明的形式參數類型,必須強制將字節數大的數據類型轉換成字節數小的數據類型。
3 重載只能以類名和方法的形參列表作爲區分標誌
根據方法的返回值來區分重載方法是灰常不靠譜的。
4 this
this和js一樣,表示是對當前對象的引用。this只能在方法內部使用。
5 static方法
static方法內部不能調用非靜態方法,但是非靜態方法可以調用static方法。
static和類相關,所以可以在沒有任何對象的前提下,僅僅通過類本身來調用static方法。
static方法是沒有this的方法。
6 輪不到你用finalize()
7 垃圾回收的機制
引用計數
標記-掃描 && 停止-複製
8 類的初始化順序
靜態成員->普通成員->靜態方法->構造器