Core java for impatient 筆記
類比c++來學習!
1.在java 中變量不持有對象,變量持有的是對象的引用,可以把變量看做c++中的只能指針,自動管理內存
需要手動初始化(否則就是空指針!)
2.final 相當於c++中的const
java中的嵌套類:
1.靜態嵌套類:
類可以獲取靜態嵌套類中變量和方法的使用權
2.內部類
內部類的方法可以訪問它的外部類的實例變量。在這種情況下,它們是外部類的實例變量!
靜態嵌套類和內部類的不同之處在與每個內部類對象都有自己外部類對象的引用。
在調用外部類方法的時候實際調用的是 outer.f()
解釋內部類的外部類引用的時候,將其稱為outer
接口是一種特殊的類,可以可做java對於行為的抽象!接口的默認定義是static和final的變量,可以有默認的實現方法!
繼承接口的類必須實現接口的方法!並且將接口的方法聲明為public!
在接口的默認方法和父類的方法發生沖突對的時候優先選擇父類方法
java中常用的接口
Comparable接口
Comparator接口
Runnable接口,產生一個沒有返回值的函數
lambda表達式是一塊代碼,可以將這一部分作為定義的方法或者對象傳遞出去。
lambda表達式方法中的this代表的是創建lambda表達式的方法的this參數
經常需要在lambda中訪問來自閉合方法或者類的變量:
當lambda定義的行為在線程中調用的時候,引用的變量可能已經不存在了。。。怎麽辦?
lambda表達式有三個部分:1.代碼塊2.參數3.自由變量的值(既不是參數變量也不是內部定義的變量)
lambda的表達式必須在數據結構中存儲這些值!
就是說這些值已經被lambda表達式捕獲了(為了確保被捕獲的值是良好定義的,在lambda中你只能引用那些值不會改變的變量,final變量)
可以定義局部類然後返回構造函數,相當於實現簡單工廠設計模式。。
子類可以使用關鍵字super來調用父類的方法或者構造函數。
final方法不能被覆蓋,final類不能被繼承!
.
java中所有類都是object的子類,提供了toString,hash,Clone,equals等方法。
class加載了java類型的信息,包括類,數組,接口,基本類型
反射庫可以讓程序在運行過程中訪問類的成員,變量和方法!
在向下轉換的時候,安全的方法是使用instanceof檢測,然後再用強制類型轉換方法轉換!
抽象方法和類:對某一個對象的特定行為的抽象和對某一類對象的抽象!
當你在子類中定義equals方法的時候首先要調用父類的equals方法,因為當父類的檢查都沒有通過的時候,對象必定不相等!
自帶的clone()在處理引用的引用時是淺拷貝,如果需要深拷貝自己定義。
在處理靜態成員的時候要當選新他們的構造次序,由於枚舉常量在靜態成員之前構建,所以你不能再構造函數裏引用任何靜態成員。
Core java for impatient 筆記