標籤:簡單 法則 finalize 並且 靜態方法 單詞 編寫 class類 欄位表
- 建構函式不具有多態性,它們實際上static方法,該static是隱式聲明
- 對象具有狀態、行為和標識。這意味著每一個對象都可以擁有內部資料(它給出了該對象的狀態)和方法(方法產生行為),並且每一個對象都可以唯一的與其他對象區分開來,具體來說,就是們每個對象在記憶體中都有一個唯一的地址
- java中,一切都被視為對象,因此可以採用單一固定的文法。儘管一切都看做對象,但操縱的標識符實際上是對象的一個“引用”
- finalize()用途:記憶體回收只與記憶體有關,即使用記憶體回收行程的唯一原因是為了回收程式中不再使用的記憶體。所以對記憶體回收有關的任何行為來說(尤其是finalize()方法),它們也必須同記憶體及其回收有關。
- 無論是記憶體回收還是終結,都不保證一定會發生。如果是java虛擬機器並未面臨記憶體耗盡的情形,它是不會浪費時間去執行記憶體回收以修複記憶體的。
- 基類(父類)和匯出類(子類)的構建過程是從“基類”向外擴散的,所以基類在匯出類訪問它之前就已經完成了初始化。即使你不為子類建立構造器,編譯器也會為你合成一個預設的構造器,該構造器將調用積累的構造器。
- 組合技術(has-a)通常用於在新類中使用現有類的功能而非它的介面這種情形。即在新類中嵌入某個對象,讓其實現所需要的功能,但新類的使用者看到的只是為新類定義的介面,而非所內嵌物件的介面。為取得此效果,需要在新類中嵌入一個現有類的private對象
- protected關鍵字:就類使用者而言,這是private的,但對於任何繼承於此類的匯出類(子類)或其他任何位於同一個包內的類來說,它是可以訪問的。
- java中所有方法都是通過動態綁定實現多態。動態綁定也叫運行時綁定,是指在運行時根據對象的類型進行綁定。
- 多態是一項讓程式員“將改變的事物與為改變的事物分離開來”的重要技術。如果某個方法是靜態,它的行為就不具有多態性。
- 複雜物件調用構造器的順序:A.調用基類構造器。這個步驟會不斷反覆遞迴下去,首先是構造這種階層的根,然後是下一層匯出類(子類),等等,知道最低層的匯出類(子類)B.按聲明順序調用成員的初始化方法C.調用匯出類構造器的主體
- 編寫構造器時有一條有效準則:用儘可能簡單的方法使對象進入正常狀態,如果可以的話,避免調用其他方法。在構造器內唯一能夠安全調用的方法是基類中的final方法(也適用於private方法,它們自動屬於final方法)
- 一條通用的準則是:用繼承表達行為間的差異,並用欄位表達狀態上的變化。通過繼承得到了兩個不同的類,用於表達act()方法的差異,而Stage通過運用組合使自己的狀態發生變化。在這種情況下,這種狀態的改變也就產生了行為的改變。
- 建立一個能夠根據傳遞參數對象的不同而具有不同的方法稱為策略設計模式。這類方法包含所要執行的演算法中固定不變的成分,而“策略”包含所要變化的部分。策略就是傳遞進去的參數對象,它包含所要執行的代碼。
- 適配器設計模式:適配器中的代碼將接受你所擁有的介面,併產生你所需要的介面。
- 使用介面的核心原因:為了能夠向上轉為多個基底類型(以及由此而帶來的靈活性);防止用戶端程式員建立該類的對象,並確保這僅僅是建立一個介面。
- 如果想從外部類的非靜態方法之外的任意位置建立某個內部類的對象,那麼必須具體指明這個對象的類型:OuterClassName.InnerClassName。內部類可以訪問外部類對象的所有成員,而不需要任何特殊條件。此外內部類還有外部類所有元素的訪問權
- ArrayList,LinkedList,LinkedHashSet,LinkedHashMap都是按儲存順序儲存集合對象
- 多態是物件導向編程的基本目標。運行時類型資訊使得你可以在程式運行時發現和使用類型資訊。
- java的基本理念是”結構不佳的代碼不能運行”
- 異常情形是指阻止當前方法或範圍繼續執行的問題。異常情形和普通問題的區分很重要:普通問題是指當前環境下能夠得到足夠多的資訊,總能處理這個錯誤;對於異常情形就不能繼續下去了,因為在當前環境下無法獲得必要的資訊解決問題。你所能做的就是從當前環境中跳出,並把問題交給上一級環境,這就是拋出異常時發生的事情。
- Regex:-?\\d+表示可能有一個負號,後面跟著一位或多位元字;“(-|\\+)?\\d+”表示可能以一個加號或減號開頭,後面跟著一位或多位元字;\W表示非單詞字元,\w表示單詞字元,二者唯一的區別是w大小寫不同;n\\W表示字母n後邊跟著非單詞字元
- Class對象僅在需要的時候才被載入,static初始化是在類載入時進行的。使用Class.forName(String s)方法擷取類的類型對象時,參數必須填寫包名和類名;java還提供另一種方法擷取Class對象的引用,即類名.class(類字面常量),該種方法更安全,因為在編譯時間即會受到檢查,因此不需要置於try塊中。使用.class方法擷取對類的引用不會引發初始化,使用Class.forName()方法則會引發初始化。
- Class引用總是指向某個Class對象,它克制製造某個類的執行個體,並包含可作用於這些執行個體的所有方法代碼。它還包含該類的靜態成員,因此,Class表示的就是它所指向的對象的確切類型,而該對象就是Class類的一個對象,如下的兩種寫法都是正確的:Class intClass=int.class;Class<Integer> genericIntClass=int.class;genericIntClass=Integer.class;
- 代理是基本的設計模式之一,它是你為了提供額外的或不同的操作,而插入的用來代替“實際”對象的對象。這些操作通常涉及與“實際”對象的通訊,因此代理通常充當著中間人的角色。
- 數組與其他容器的區別有三方面:效率、類型和儲存基本類型的能力。數組是一種效率最高的儲存和隨機訪問對象引用序列的方式。數組是一個簡單的線性序列,這使得元素訪問非常快。但是為這種速度付出的代價是數組對象的大小被固定並且在其生命週期不可改變。
27.泛型和多態並不衝突。
java編程思想