Java 基礎學習筆記補充

https://www.bilibili.com/video/BV1Kb411W75N?p=303

Object類

equals函數,

官方建議重寫equal方法。  

Date類:注意計算原點。

Java 的傳遞機制是值傳遞,地址也是地址值,所以基本類型無法通過值傳遞,交換原有,引用卻可以。

string 類型因爲常量池的存在,所以 == 和 重寫的equals 方法一樣

toString()注意源碼,object的源碼,輸出的是類名加地址:

單元測試方法:

static在內存中只留存一份。這樣,一個類的所有實例,都可以共享同一個變量。靜態變量又叫類變量,隨類 在方法區初始化一起初始化,且只一次。可以用類.靜態變量調用。

注意靜態和類是綁定的,和對象無關,所以在類方法中,super,this 等都不可用。且類初始化早於對象初始化,所以用這個邏輯去理解現象。

重載和重寫,很重要。

構造器是用來造類對象的,所以不應該理解爲對象能調用的方法。

JavaBean:

UML圖:

封裝和隱藏:private,關鍵字,是封裝的體現,因爲可以設置修改變量的條件,變量對外不可見。

this關鍵字,意指當前對象,而不是當前類。

this調用構造器:

super關鍵字:子類屬性不會覆蓋父類屬性

子類構造器默認調用super()

從紅線部分,可以看出,構造器和類綁定,並不和對象相關,所以用了構造器,未必就創造了對象。

包裝類:

基本數據類型和object類沒有關係,基本類型沒有成員變量和方法。爲了讓基本數據類型,也具有類的特徵,所以有了包裝類。

基本數據類型轉包裝類,注意boolean-》Boolean。

包裝類轉基礎類型,做加減乘除:

jdk5開始實現了自動裝箱與拆箱。

基本數據類型,包裝類和string的轉換:

String 轉int 和 Integer等:

面試題;因爲三元運算符要保證所有東西類型範圍一致,所以把Integer擴成Double了。看來println對Integer是值敏感的。而不是地址。

Integer底層實現了緩存區數組,將常用數放進數組。會讓多個對象指向同一個地址,提高效率。這個數組【-128,127】.超出緩存區規定大小,則new一個新對象。

單例模式:系統中,只有一個當前類的對象。

注意成員和方法都是靜態的,因此才能單例,直接通過類...調用,下圖爲餓漢式。

懶漢式創建:

應用場景:

代碼塊:

靜態代碼塊,不需要new就會執行,只要有申明就執行,非靜態代碼塊,要new對象才執行。多個同類代碼塊的執行順序按定義時的先後順序。但,靜態代碼塊優先於非靜態。

初始化時,由父及子,靜態先行。

按代碼塊的位置,比較和顯示初始化的順序

final:不可以通過對象.屬性來修改。注意static final 修飾全局常量。

abstract關鍵字:

abstract不能修飾的東西,僅考慮和是否能重寫矛盾。

模版方法設計模式:聯繫填空題。或者英語論文模版

應用舉例,計算某個函數運行時間。使用抽象方法,暴露出去,讓子類實現。

接口定義了一組規範,因爲必須實現所有抽象方法才能實例化,這個抽象方法可理解爲規範,:

接口的應用,代理模式:

 

工廠模式:

接口中的靜態方法和默認方法:默認方法的意義是,在這一組行爲規範上,增加新的公有的行爲規範,如果沒有默認方法,所有實現類,都得添加這個相同的行爲。

內部類:

實例化成員內部類,注意靜態和非靜態成員的區別,非靜態得先實例化外面的類,再調用裏面的初始化構造器。

局部內部類的實際使用。一般用來返回一個類或者接口類型

局部內部類一個注意點:好理解,因爲一個類中使用的變量,其修改權限不應該隨意交給外部方法,這樣會增加錯誤。所以它調用的外部方法中的變量,必須是個final

異常:

異常處理過程:編譯異常用try catch處理。運行時異常不處理。因爲處理不了。

、hello---1不會執行,因爲這個異常在上一條語句出現,並且被被處理掉了,直接進了catch

 

return 3:

throws 方式:把問題往上拋。一直到main方法,這個鍋沒人甩了,只能自己try catch 掉

手動拋出異常:注意是throw,而不是throws。 通過throw,手動創建一個異常。手動拋出會報錯。

自定義異常類:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章