使用try、catch打包System.in.read(),聲明throws java.io.IOException。
·如果父類異常對象在子類異常前被捕捉,則catch子類異常對象的區塊將永遠不會被執行。
·catch括號中列出的異常不得有繼承關系,否則會發生編譯錯誤。
·在catch區塊進行完部分錯誤處理之後,可以使用throw將異常再拋出。
·操作對象異常無法使用try、catch處理時,可由方法的客戶端一句當時調用的環節信息進行處理,使用throw聲明會拋出的異常類型或父類。
·如果使用繼承時,父類某個方法聲明throws某些異常,子類重新定義該方法時可以:①不聲明throws任何異常②throws父類該方法中聲明的某些異常③throws父類該方法中聲明異常的子類④throws父類方法中未聲明的其他異常⑤throws父類方法中聲明異常的父類。在多重方法調用下,異常發生點可能是在某個方法之中,若想得知異常發生的根源,以及多重方法調用下的堆棧傳播,可以利用異常對象自動收集的堆棧追蹤來取得相關信息,例如調用異常對象的printStackTrace()。
·FileUtil中通過Scanner搭配FileInputStream來讀取文檔,實際上Scanner對象有close方法,可以關閉Scanner相關資源與搭配的FileInputSream.斷言是判定程序中的某個執行點必然是或不是某個狀態,所以不能當作像if之類的判斷式來使用,assert不應當作程序執行流程的一部分。
·若想最後一定要執行關閉資源的動作,try、catch語法可以搭配finally,無論try區塊中有無發生異常,若撰寫有finally區塊,則finally區塊一定會被執行。
·若程序撰寫先return。而且有finally區塊,那麼這個區塊會先執行,然後再講返回值返回。
·嘗試關閉資源語法:想要嘗試自動關閉資源的對象,是撰寫在try之後的括號中,如果無須catch處理任何異常,可以不用撰寫,也不用撰寫finally自行嘗試關閉資源。
·嘗試關閉資源語法可套用的對象,必須操作java.lang.AutoCloseable接口
·嘗試關閉資源語法也可以同時關閉兩個以上的對象資源,只要中間以分號分隔
·JavaSE中提供了滿足各種需求的API,收集對象的行為,都定義在java.collection中,既能收集對象也能驅逐對象。
·如果手機是具有索引順序,可以使用數組。
·List是一種Collection,作用是收集對象,並以索引的方式保留手機的對象順序
·ArrayListArrayList特性:數組在內存中會是連續的線性空間,根據索引隨機存取時速度快,如果操作上有這類需求時,像是排序,就可使用ArrayList,可得到較好的速度表現。
·LinkedList在操作List接口時,采用了鏈接(Link)結構。
·在收集過程中若有相同對象,則不再重復收集,如果有這類需求,可以使用Set接口的操作對象。
·HashSet的操作概念是,在內存中開設空間,每個空間會有個哈希編碼。;Queue繼承自Collection,所以也具有Collection的add()、remove()、element()等方法,然而Queue定義了自己的offer()、poll()與peek()等方法,最主要的差別之一在於:add()、remove()、element()等方法操作失敗時會拋出異常,而offer()、poll()與peek()等方法操作失敗時會返回特定值。
·如果對象有操作Queue,並打算以隊列方式使用,且隊列長度受限,通常建議使用offer()、poll()與peek()等方法。LinkedList不僅操作了List接口,與操作了Queue的行為,所以可以將LinkedList當作隊列來使用。
·隊列的前端與尾端進行操作,在前端加入對象與取出對象,在尾端加入對象與取出對象,Queue的子接口Deque就定義了這類行為;java.util.ArrayDeque操作了Deque接口,可以使用ArrayDeque來操作容量有限的堆棧。泛型語法:類名稱旁有角括號<>,這表示此類支持泛型。實際加入的對象是客戶端聲明的類型。
·匿名類語法來說,Lambda表達式的語法省略了接口類型與方法名稱,->左邊是參數列,而右邊是方法本體;在Lambda表達式中使用區塊時,如果方法必須有返回值,在區塊中就必須使用return。interator()方法提升至新的java.util.Iterable父接口。
·Collections的sort()方法要求被排序的對象必須操作java.lang.Comparable接口,這個接口有個compareTo()方法必須返回大於0、等於0或小於0的數;Collections的sort()方法有另一個重載版本,可接受java.util.Comparator接口的操作對象,如果使用這個版本,排序方式將根據Comparator的compare()定義來決定。
·在java的規范中,與順序有關的行為,通常要不對象本身是Comparable,要不就是另行指定Comparator對象告知如何排序;若要根據某個鍵來取得對應的值,可以事先利用java.util.Map接口的操作對象來建立鍵值對應數據,之後若要取得值,只要用對應的鍵就可以迅速取得。常用的Map操作類為java.util.HashMap與java.util.TreeMap,其繼承自抽象類java.util.AbstractMap。
·Map也支持泛型語法,如使用HashMap的范例:
·如果使用TreeMap建立鍵值對應,則鍵的部分則會排序,條件是作為鍵的對象必須操作Comparable接口,或者是在創建TreeMap時指定操作Comparator接口的對象。
Properties類繼承自Hashtable,HashTable操作了Map接口,Properties自然也有Map的行為。雖然也可以使用put()設定鍵值對應、get()方法指定鍵取回值,不過一般常用Properties的setProperty()指定字符串類型的鍵值,getProperty()指定字符串類型的鍵,取回字符串類型的值,通常稱為屬性名稱與屬性值。
·如果想取得Map中所有的鍵,可以調用Map的keySet()返回Set對象。由於鍵是不重復的,所以用Set操作返回是理所當然的做法,如果想取得Map中所有的值,則可以使用values()返回Collection對象。
·如果想同時取得Map的鍵與值,可以使用entrySet()方法,這會返回一個Set對象,每個元素都是Map.Entry實例。可以調用getKey()取得鍵,調用getValue()取得值。
這周我沒有敲打代碼,只是單純的看書總結知識點,清明假期提前一天回來開始實際學習89章節。