第四章
無聊的Date類
A類使用了B類時,只需要:
>javac A.java
即可以編譯A和B
java編譯器會自動比較.class和.java文件的版本,如果.java較新則自動重新編譯之。
訪問器最好返回成員變量的拷貝,clone
final修飾成員變量時,聲明時可以不給初值,即final空白,在第一次使用之前必須被初始化。
每一個類都可以有一個main方法,可用于單元測試。
Java采用值傳遞
多個函數(shù)具有相同名稱不同參數(shù),叫做重載;函數(shù)的簽名包括函數(shù)名稱和參數(shù),而不包括返回值。
局部變量未初始化時,會引起編譯錯誤;類成員變量未初始化時會默認(rèn)被初始化
顯示域初始化
java一個構(gòu)造器可以調(diào)用另一個構(gòu)造器,用this(x,y,z);C++沒有這種方式。
第五章
super和this的實現(xiàn)是不同的,super并不是一個對象的引用,不能將super賦值給一個變量,它只是一個指示編譯器調(diào)用超類方法的特有關(guān)鍵字。
使用this或super調(diào)用構(gòu)造函數(shù)時,必須放在首行
Integer Long是「包裝器」,對于和基本類型的轉(zhuǎn)換時「編譯器」進(jìn)行的自動打包和拆包,而不是jvm的行為。
java也支持參數(shù)數(shù)量可變的方法,并且最后一個參數(shù)可以傳遞數(shù)組。
main方法也可以寫成:
public static void main(String... args)
強制類型轉(zhuǎn)換:
強制類型轉(zhuǎn)換的前提是父類型引用指向的對象類型確實是之類對象,此時才可以進(jìn)行轉(zhuǎn)換,否則會拋出ClassCastException異常。正確的方式是在轉(zhuǎn)換前通過instanceof來判斷。
使用Method實現(xiàn)回調(diào)功能,是C程序員的方式,Java應(yīng)該使用接口實現(xiàn)。
第六章
接口中不能包含實例域或靜態(tài)方法,但是可以包含常量。
接口中方法默認(rèn)為public;接口中常量默認(rèn)為public static final。
一個類只能繼承一個超類,但是可以實現(xiàn)多個接口
內(nèi)部類

內(nèi)部類可以聲明為public或private
內(nèi)部類的對象有一個隱式引用,它引用了實例化該內(nèi)部對象的外圍類對象,通過這個引用,可以訪問外圍類對象的全部狀態(tài)。static內(nèi)部類沒有這種指針
內(nèi)部類聲明為私有,只有其外部類才能夠生成內(nèi)部類對象。只有內(nèi)部類可以是私有類,而常規(guī)類只可以具有包可見性,或公有可見性。
javap命令
內(nèi)部類會生成outer$inner. class的文件
局部內(nèi)部類的實現(xiàn):

注意局部內(nèi)部類是如何訪問final的局部變量的,這里有些像閉包。

當(dāng)內(nèi)部類不需要引用任何外部類的對象時,可以聲明為static。
聲明在接口中的內(nèi)部類自動成為static和public。