一、類中定義類數組
(1)當一類中的成員,做爲另一種事物的時候,這個成員就能夠定義爲內部類.app
(2)分類:①成員內部類函數
②靜態內部類spa
③私有內部類指針
④局部內部類orm
⑤匿名內部類 對象
⑥Lambda表達式 blog
2、成員內部類繼承
(1)一個類定義在外部類的成員位置就爲成員內部類,具備類的特色,繼承,實現...成員內部類具備成員的特色,被成員修飾符修飾。接口
(2)注意:①在成員內部類中不能定義靜態內容,除了靜態常量,靜態內部類才能任意定義靜態內部。
②在成員內部類中可使用外部類中的成員,包括私有的,靜態的。
③在外部類中能夠跟隨成員內部類的對象使用成員內部類的成員。
③成員內部類的對象性須要經過外部類對象構建 外部類名.內部類類名 引用 = new 外部類().new 內部類()。
⑤跟隨內部類的對象使用內部類的成員,注意訪問權限。
3、靜態內部類:
(1)能夠定義靜態內容(成員),成員內部類中不能夠直接定義靜態內容除了靜態常量之外。
(2)靜態內部類中能夠直接使用外部類中靜態內容,須要經過外部類對象使用外部類中的成員(由於內部類自己是靜態的)。
(3)外部類中能夠直接經過內部類對象使用內部類成員,能夠經過內部類的類名使用內部類靜態內容。
(4)其餘類中使用靜態內部類中內容:
①靜態內部類中的靜態內容 : 外部類類名.內部類類名.靜態內容
②靜態內部類中的成員內容: new 外部類類名.內部類類名(); 經過內部類對象調用它成員。
4、私有內部類
只能在當前外部類中經過內部類對象使用。
5、局部內部類
(1)不能被成員修飾符等修飾(public,private,protected,static)。
(2)局部內部類中不能定義靜態內容,除了靜態常量。
(3)局部內部類中能夠直接使用外部類成員,可使用所在方法中的局部變量。
(4)局部內部類智能在當前所在的方法中經過內部類對象使用,其餘位置沒法使用。
(5)在局部內部類中使用了所在方法中的局部變量|形參,這個局部變量會默認被final修飾。
(6)jdk8開始默認被final修飾,jdk7及以前須要顯示被final修飾
6、匿名內部類
(1)做用: 用來簡化沒有自己本身做用的實現類 | 子類。
(2)上層 : 接口 | 抽象類。
7、Lambda 表達式
jdk8新增lambda表達式
(1)做用: 爲了簡化匿名內部類對象
(2)前提: 函數式接口
(3)函數式接口 : 只有一個必須被重寫的抽象方法的接口
(4)強制檢測是否爲函數式接口:註解: @FunctionalInterface
(5)語法:
()->{}
() : 匹配要重寫的抽象方法的參數列表
-> : 箭頭函數 箭頭符號
{} : 要重寫的抽象方法的方法體
8、異常:
程序沒法正常執行完畢
(1)異常體系:
Throwable
/ \
Error Exception
(2)Error : 錯誤,通常由虛擬機生成並脫出,無須要程序猿管理
(3)Exception : 異常
①CheckedException 編譯時異常|檢查時異常: 發生在程序編譯期間程序若是遇到編譯時異常沒有處理,程序沒法正常運行
②RuntimeException 運行時異常 : 發生程序運行期間通常能夠經過加強程序健壯性的代碼處理 if
(4)注意 :若是程序遇到異常沒有處理,沒法繼續執行
(5)常見的一些運行時異常:
①空指針異常 NullPointerException
②數組越界異常 ArrayIndexOutOfBoundsException
③數組長度負數異常 NegativeArraySizeException
④類型轉換異常 ClassCastException
⑤數學異常 ArithmeticException
⑥數字格式異常 NumberFormatException